A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© fanrong 中级黑马   /  2015-6-23 18:29  /  226 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.变量:
如果子父类中出现了非私有的同名的成员变量时,子类要访问本类中变量用this,
子类要访问父类中的同名变量用super
用法几乎一致,this代表的是本类对象的引用
          super代表的是父类对象的引用
  注意:如果子类中没有父类中有的变量,那么用super也可以代表子类对象的引用
2.子父类中的函数
  
  当子类和父类出现一模一样的函数时,
  当子类调用该函数时,会运行子类函数的内容,
  如同父类的函数被覆盖了一样。
  
  这种情况是函数另一个特点:重写(覆盖)
  
  当子类继承了父类,沿袭了父类的功能到子类中,
  但子类虽具备该功能,但是功能的内容却和父类不一致,这时没有必要定义新功能
  而是使用覆盖特性,保留父类的功能定义,并重写功能内容
  
  覆盖:(函数/方法)
  子类覆盖父类,必须保证子类的权限一定要大于等于父类权限,才可覆盖,否则编译失败
    public>默认(没有权限修饰符)>private
  静态只能覆盖静态
3.子父类中的构造函数

在对子类对象进行初始化时,父类的构造函数也会运行。
因为子类的构造函数默认第一行有一条隐藏语句,super();
这句话会访问父类中空参数的构造函数,而且子类中所有的构造函数默认第一行都是super();

为什么子类一定要访问父类中的构造函数
因为父类中的数据,所以子类中的对象在建立时,需要先查看父类是如何对这些数据进行初始化的
所以子类在对象初始化时要先访问一下父类中的构造函数。
如果要访问父类中指定的构造函数,可以通过手动定义super语句的方式来指定。

注意:super语句一定定义在子类构造函数的第一行

结论:子类的所有的构造函数,默认都会父类中空参数的构造函数
     但若父类中没有空参数的构造函数,则需要在子类中手动通过super(),this()语句形式来指定要访问的构造函数
     
     当然,子类的构造函数第一行也可以手动指定this语句来访问本类中的构造函数。
     子类中至少会有一个构造函数会访问父类中的构造函数。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马