---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ---------------------
子父类出现后,类成员的特点:
- 类中成员:
- 1,变量。
- 如果子父类中出现非私有的成员变量时,
- 子类要访问本类的变量用this,
- 要访问父类的变量用super,super代表的是父类的应用。
- 2,函数。
- 3,构造函数。
- 1,变量。
- super:父类对象。super关键字只能在子类内部使用,不能在非子类内使用
- 变量的特点
- 有了父类以后,内存中就变得不一样。
- 加载子类class文件前先加载父类class。
- 方法区分静态区、非静态区(存放方法), 非静态区中存放方法,父类、 子类 方法先后加载进方法区
- 对象在堆中建立。
- 内存中只有一个子类对象,
- 子类对象一new后分配属性空间:子类属性和父类属性。
- 子类中除了有this指向对象以外,还有super指向子类对象中的父类属性。
- 函数的特点
- 子类对象拿到了父类的函数,可以直接super调用。
- 子父类的函数一致时,使用子类的,这种特性叫重写(覆盖)。
- 当子类继承了父类,沿袭了父类的功能到子类中,子类虽具备该功能,但是功能却和父类不一致,这时保留父类的功能定义,重写父类内容。
- 在子类中super.函数可以添加上父类功能。
- 注意:
- 子类覆盖父类,必须保证子类权限大于等于子类权限,才可以覆盖,否则编译失败。
- 静态只能覆盖静态。牵扯到内存的先后加载问题。
- 重载:只看同名函数的参数列表,
- 重写:子父类方法要一模一样,比如返回值如果不一样是不允许的,JVM不知道掉用谁。
- 构造函数
- 构造函数 不会 存在重写,因为构造函数与类同名,子父同名类不允许出现。
- 子类对象初始化,会先执行父类构造函数。子类不显示调用父类构造函数的时候,子类的所有构造函数第一行隐式是super();调用父类空参数构造函数(非空参数的不会执行)。那么如果父类没有空参数的构造函数的时候,子类就也不能有空参数构造函数,因为没有父类的空参构造函数供其初始化。
- 为什么子类一定要访问父类构造函数?
- 因为父类中的数据,子类可以直接获取。所以子类对象建立时,需要先查看父类是如何对数据进行初始化的。
- 如果要访问父类中指定的构造函数,可以通过手动定义super语句的方式来指定。
- 简单来的说,就是子类需要父类初始化完后数据。
- 注意:
- super和this都需要定义在第一行。因为初始化动作需要先做。
- this在第一行不会影响super,因为this调用的是另一个构造函数,因为每一个构造函数第一句都是隐式调用super,所以子类中至少有一个构造函数会访问父类。
- 当父类中没有空参数的构造函数时,子类必须手动通过super语句形式来制定要访问父类中的构造函数。
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net
相关推荐
黑马程序员 - Java基础教学 - 08 - 面向对象(4)-多态.doc
public static String s_StaticField = "子类--静态变量"; // 变量 public String s_Field = "子类--变量"; // 静态初始化块 static { System.out.println(s_StaticField); System.out.println("子类--...
java反射获取所有属性,获取所有get方法,包括子类父类,以及包括List集合类
如果一个类继承一个父类,那么子类会拥有父类所规定的所以成员 子类还可以拥有父类没有的独有成员 父类可以完成的任务,子类对象也可以完成 子类可以调用父类Person p= new student(); 声明父类变量,实例化子类...
java 子类对象赋值给父类对象的使用,包括代码及详解,个人笔记
有关子类和父类。A是子类,Teacher是父类。A是Teacher 的一种(子类)会继承父类李非私
计算机后端-Java-Java核心基础-第14章 面向对象06 03. 复习:子类对象实例化过程及多态
java中的继承(子类调用父类构造方法还不懂).doc
java代码-使用java解决父类与子类的声明应用的源代码 ——学习参考资料:仅用于个人学习使用!
NULL 博文链接:https://2528.iteye.com/blog/1523901
Python学习子类父类知识
Python子类父类知识学习
java子类重写父类的方法.doc
Java的子类调用父类的构造方法.pdf
利用C#反射将子类舍弃多余的属性转换为父类,用途比较少。
计算机后端-Java-Java核心基础-第15章 面向对象07 10. 创建抽象类的匿名子类对象.avi
计算机后端-Java-Java核心基础-第13章 面向对象05 15. 子类对象实例化的全过程.avi
父类赋值给子类的一个小方法,仅供学习参考...
java训练题目 编写程序实现子类对父类构造方法的引用?
论JAVA继承机制中父类与子类的关系