2018-02-15

继承的注意事项:

虽然子类中构造方法默认有一个super()

初始化的时候,不是按照那个顺序进行的。

而是按照分层初始化进行的。super仅仅表示要先初始化分类数据,在初始化子类数据。

继承中成员方法的关系:

A:子类和父类中方法声明不一样 -- 正常

B:子类和父类中方法声明一样

查找顺序:子类->父类->如果还找不到就报错

方法重写:子类中出现和父类中方法声明一模一样的方法。(方法覆盖,方法复写)

应用:当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类的方法。这样即沿袭了父类的功能,又定义了子类特有的内容。

注意事项:

A:父类中私有方法不能被重写

父类私有方法子类根本就无法继承

B:子类重写父类方法时,访问权限不能更低

C:父类静态方法,子类也必须通过静态方法进行重写(本质不算重写,只是现象如此)

子类重写父类方法时,最好声明一模一样


---------------以上为昨天补齐的部分----------------------------------------


由于继承中存在一个现象方法重写(override),父类的功能会被子类覆盖掉,为了避免这种情况,java提供了一个关键字:final

1、final:最终的意思,常见的是它可以修饰类,方法,变量。

特点:

final可以修饰类,该类不能被继承

final可以修饰方法,该方法不能被重写(override)

final可以修饰变量,该变量不能被重新复制。因为这个变量其实是常量。

{

常量:

A:字面值常量

"hello",10,true

B:自定义常量

final int x = 10;

}

{

面试题:final修饰成员变量

可以修饰成员变量

基本类型:基本类型的值不能变;

引用类型:地址值不能变,但对象的堆内存的值是可以改变的。(既是内容可以变)

修饰变量的初始化时机

A:被final修饰的变量只能被赋值一次。

B:在构造方法完毕前(非静态常量)。

}

2、多态

同一个对象(事物),在不同时刻表现出来的不同状态。

多态的前提:

A:要有继承关系

B:要有方法重写

C:要有父类引用指向子类对象

父 father = new 子();

多态中的成员访问特点:

A:成员变量

编译看左边,运行看左边

B:构造方法

同以前的,先父再子

C:成员方法

编译看左边,运行看右边

D:静态方法

编译看左边,运行看左边

(静态和类相关,算不上重写,所以,访问还是左边的)

由于成员方法存在方法重写,所以它运行看右边。

多态的好处:

A:提高了代码的维护性(继承保证)

B:提高了代码的扩展性(由多态保证)

多态的弊端:

不能使用子类的特有功能。

使用子类的特有功能:

A:创建子类对象,调用子类的方法。(可以,但是很多时候不合理,而且太占内存)

B:把父类的引用强制转化为子类的引用(向下转型)

{

对象间的转型问题:

向上转型:

Fu f = new Zi();

向下转型:

zi z = new (Zi)f;//要求该f必须是能够转换为Zi的。

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 面向对象笔记 一、 对象在内存中的存放方法以及被调用过程 class文件首先被加载到方法区中的class文件内容区...
    VictorBXv阅读 485评论 0 2
  • Win7下如何打开DOS控制台? a:开始--所有程序--附件--命令提示符 b:开始--搜索程序和文件--cmd...
    逍遥叹6阅读 1,614评论 4 12
  • 一、Java 简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计...
    子非鱼_t_阅读 4,262评论 1 44
  • 本文出自 Eddy Wiki ,转载请注明出处:http://eddy.wiki/interview-java.h...
    eddy_wiki阅读 1,227评论 0 5
  • 2016年49周,11月28日-12月4日 生活 周一(11.28)没什么事做,除了完成常规的《证券时报》和实验室...
    im天行阅读 197评论 0 0