Java中super和this关键字详解
目录
- 父类空间优先于子类对象产生
- super和this的含义
- super和this的用法
- 继承的特点
父类空间优先于子类对象产生
在每次创建子类对象时,先初始化父类空间,再创建其子类对象本身。目的在于子类对象中包含了其对应的父类空间,便可以包含其父类的成员,如果父类成员非private修饰,则子类可以随意使用父类成员。代码体现在子类的构造方法调用时,一定先调用父类的构造方法。
理解图解如下:
super和this的含义
super :代表父类的存储空间标识(可以理解为父亲的引用)。 this :代表当前对象的引用(谁调用就代表谁)。
super和this的用法
访问成员:
this.成员变量 ‐‐ 本类的 super.成员变量 ‐‐ 父类的 this.成员方法名() ‐‐ 本类的 super.成员方法名() ‐‐ 父类的
用法演示,代码如下:
class Animal { public void eat() { System.out.println("animal : eat"); } } class Cat extends Animal { public void eat() { System.out.println("cat : eat"); } public void eatTest() { this.eat(); // this 调用本类的方法 super.eat(); // super 调用父类的方法 } } public class ExtendsDemo08 { public static void main(String[] args) { Animal a = new Animal(); a.eat(); Cat c = new Cat(); c.eatTest(); } }
输出结果为:
animal : eat
cat : eat
animal : eat
访问构造方法:
this(...) ‐‐ 本类的构造方法 super(...) ‐‐ 父类的构造方法
子类的每个构造方法中均有默认的super(),调用父类的空参构造。手动调用父类构造会覆盖默认的super()。 super() 和 this() 都必须是在构造方法的第一行,所以不能同时出现。
继承的特点
1.Java只支持单继承,不支持多继承。
//一个类只能有一个父类,不可以有多个父类。 class C extends A{} //ok class C extends A,B... //error
2.Java支持多层继承(继承体系)。
class A{} class B extends A{} class C extends B{}
顶层父类是Object类。所有的类默认继承Object,作为父类。
3.子类和父类是一种相对的概念。
到此这篇关于Java中super和this关键字详解的文章就介绍到这了,更多相关Java super和this内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
-
举例讲解Java编程中this关键字与super关键字的用法
this 总要有个事物来代表类的当前对象,就像C++中的this指针一样,Java中的this关键字就是代表当前对象的引用. 它有三个主要的作用: 1.在构造方法中调用其他构造方法. 比如有一个Student类,有三个构造函数,某一个构造函数中调用另外构造函数,就要用到this(),而直接使用Student()是不可以的. 2.返回当前对象的引用. 3.区分成员变量名和参数名. 看下面的例子: public class Student { private String name; p
-
java中this与super关键字的使用方法
java中this与super关键字的使用方法 这几天看到类在继承时会用到this和super,这里就做了一点总结,与各位共同交流,有错误请各位指正~ this this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针. this的用法在java中大体可以分为3种: 1.普通的直接引用 这种就不用讲了,this相当于是指向当前对象本身. 2.形参与成员名字重名,用this来区分: class Person { private int age = 10; public Perso
-
关于java关键字this和super的区别和理解
this: this理解为:当前对象 或 当前正在创建的对象 可以调用的结构:属性.方法:构造器 this调用属性.方法: 先了解一下形参: 形参的意义就是给属性赋值,我们是要给同名的属性赋值,这时候我们就把形参名和属性的名字写成一样,这样我们就知道我们传入的形参就是要给我们同名的属性去赋值的. 在类的方法中,我们可以使用"this.属性"或"this.方法"的方式,调用当前对象属性或方法.但是, 通常情况下,我们都择省略"this.".特殊情况
-
Java关键字详解之final static this super的用法
目录 1. final 关键字: 2. static 关键字: 3. this 关键字: 4. super 关键字: final,static,this,super 关键字总结 正文开始@Assassin 1. final 关键字: final 关键字,意思是最终的.不可改变的,初始化之后就不能再次修改 ,用来修饰类.方法和变量,具有以下特点: final 修饰的类不能被继承,final类中的所有成员方法都会被隐式的指定为 final 方法: final 修饰的方法不能被重写: final 修饰
-
Java关键字this与super详解用法
目录 一.this 关键字的使用 1. 概述 2. 作用 3. 使用 3.1 修饰属性和方法 3.2 调用构造器 3.3 返回当前对象 二.super关键字的使用 1. 概述 2. 使用 3. 使用 3.1 调用属性和方法 3.2 调用构造器 三.this和super的区别 四.子类对象实例化的全过程 一.this 关键字的使用 1. 概述 this是什么? 在Java中,this关键字比较难理解,它的作用和其词义很接近,表示“当前”的意思. 2. 作用 this关键字可以用来修饰.调用:属性.
-
Java中super和this关键字详解
目录 父类空间优先于子类对象产生 super和this的含义 super和this的用法 继承的特点 父类空间优先于子类对象产生 在每次创建子类对象时,先初始化父类空间,再创建其子类对象本身.目的在于子类对象中包含了其对应的父类空间,便可以包含其父类的成员,如果父类成员非private修饰,则子类可以随意使用父类成员.代码体现在子类的构造方法调用时,一定先调用父类的构造方法. 理解图解如下: super和this的含义 super :代表父类的存储空间标识(可以理解为父亲的引用). this
-
Java 中This用法的实例详解
Java 中This用法的实例详解 用类名定义一个变量的时候,定义的只是一个引用,外面可以通过这个引用来访问这个类里面的属性和方法. 那们类里面是够也应该有一个引用来访问自己的属性和方法纳? 呵呵,Java提供了一个很好的东西,就是 this 对象,它可以在类里面来引用这个类的属性和方法.先来个简单的例子: public class ThisDemo { String name="Mick"; public void print(String name){ System.out.pr
-
java 中enum的使用方法详解
java 中enum的使用方法详解 enum 的全称为 enumeration, 是 JDK 1.5 中引入的新特性,存放在 java.lang 包中. 下面是我在使用 enum 过程中的一些经验和总结. 原始的接口定义常量 public interface IConstants { String MON = "Mon"; String TUE = "Tue"; String WED = "Wed"; String THU = "Thu
-
多用多学之Java中的Set,List,Map详解
很长时间以来一直代码中用的比较多的数据列表主要是List,而且都是ArrayList,感觉有这个玩意就够了.ArrayList是用于实现动态数组的包装工具类,这样写代码的时候就可以拉进拉出,迭代遍历,蛮方便的. 也不知道从什么时候开始慢慢的代码中就经常会出现HashMap和HashSet之类的工具类.应该说HashMap比较多一些,而且还是面试经典题,平时也会多看看.开始用的时候简单理解就是个键值对应表,使用键来找数据比较方便.随后深入了解后发现 这玩意还有点小奥秘,特别是新版本的JDK对Has
-
Java中CountDownLatch进行多线程同步详解及实例代码
Java中CountDownLatch进行多线程同步详解 CountDownLatch介绍 在前面的Java学习笔记中,总结了Java中进行多线程同步的几个方法: 1.synchronized关键字进行同步. 2.Lock锁接口及其实现类ReentrantLock.ReadWriteLock锁实现同步. 3.信号量Semaphore实现同步. 其中,synchronized关键字和Lock锁解决的是多个线程对同一资源的并发访问问题.信号量Semaphore解决的是多副本资源的共享访问问题. 今天
-
Java 中synchronize函数的实例详解
Java 中synchronize函数的实例详解 java中的一个类的成员函数若用synchronized来修饰,则对应同一个对象,多个线程像调用这个对象的这个同步函数时必须等到上一个线程调用完才能由下一个线程调用. 那么如果一个类同时有两个成员函数是由synchronized修饰如代码所示,对与同一个对象,是否可以在两个线程运行时,一个调用funcA,同时另一个调用funcB? Mysyn是这样一个类,如果我有两个线程,一个在run方法中先运行funcA再运行funcB,另一个线程在run方法
-
java 中复合机制的实例详解
java 中复合机制的实例详解 继承的缺陷 继承的缺陷是由它过于强大的功能所导致的.继承使得子类依赖于超类的实现,从这一点来说,就不符合封装的原则. 一旦超类随着版本的发布而有所变化,子类就有可能遭到破坏,即使它的代码完全没有改变. 为了说明的更加具体,假设我们现在程序中使用到了HashSet,我们需要增加一个功能,去统计这个HashSet自创建以来一共曾经添加过多少元素. 在还不知道继承的缺陷的情况下,我们设计了一个类,继承了HashSet,添加了一个属性addCount来进行统计,并且复写了
-
关于java中构造函数的一些知识详解
java的构造函数是一个非常重要的作用,首先java里的构造函数是可以重载的,而且因为也是可以继承在父类的构造函数,所以在子类里,首先必然是调用父类的构造函数.可以看下面的两个例子来对比: public class Test { public static void main(String args[]) { B b = new B(100); } } class A { public A() { System.out.println("A without any parameter"
-
java中的arrays.sort()代码详解
Arrays.sort(T[], Comparator < ? super T > c) 方法用于对象数组按用户自定义规则排序. 官方Java文档只是简要描述此方法的作用,并未进行详细的介绍,本文将深入解析此方法. 1. 简单示例 sort方法的使用非常的简单明了,下面的例子中,先定义一个比较Dog大小的Comparator,然后将其实例对象作为参数传给sort方法,通过此示例,你应该能够快速掌握Arrays.sort()的使用方法. import java.util.Arrays; impo
-
详解Java中NullPointerException异常的原因详解以及解决方法
NullPointerException是当您尝试使用指向内存中空位置的引用(null)时发生的异常,就好像它引用了一个对象一样. 当我们声明引用变量(即对象)时,实际上是在创建指向对象的指针.考虑以下代码,您可以在其中声明基本类型的整型变量x: int x; x = 10; 在此示例中,变量x是一个整型变量,Java将为您初始化为0.当您在第二行中将其分配给10时,值10将被写入x指向的内存中. 但是,当您尝试声明引用类型时会发生不同的事情.请使用以下代码: Integer num; num
随机推荐
- 用命令创建MySQL数据库(de1)的方法
- asp.net实现Postgresql快速写入/读取大量数据实例
- 深入理解JavaScript系列(1) 编写高质量JavaScript代码的基本要点
- 详解Vue2.0之去掉组件click事件的native修饰
- Vuejs实现带样式的单文件组件新方法
- javascript中eval解析JSON字符串
- 深入Java分布式计算的使用分析
- webpack独立打包和缓存处理详解
- JS操作select下拉框动态变动(创建/删除/获取)
- 在wamp集成环境下升级php版本(实现方法)
- 获取URL文件名后缀
- asp 读取通过表单发送的post数据
- Android如何禁止向EditText控件中输入内容详解
- Ajax简单的异步交互及Ajax原生编写
- js读取被点击次数的简单实例(从数据库中读取)
- jQuery Validate插件自定义验证规则的方法
- C语言解线性方程的四种方法
- Java 根据网址查询DNS/IP地址的方法
- Java设计中的Builder模式的介绍
- 深入Golang之context的用法详解