Java 继承02

Posted 青柠锦鲤

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 继承02相关的知识,希望对你有一定的参考价值。

向上类型转换

  父类型的引用指向子类型的实例。

Person p = new Person();
Animal a = p;  //子类对象赋值给父类类型的变量

注意:

向上转型后,子类单独定义的方法会丢失。

如果子类中重写了父类的方法,那么调用这个方法的时候,将会调用子类中的方法。

意义:

减少重复代码。

实例化的时候可以根据不同的需求实例化不同的的对象,实现参数统一化。

总结:

  1.假设A为基类,B为子类  

B b = new B();

A a = b;

a.play(); //A,B中都定义了play()方法,即子类重写(覆写)了该方法

 

分析:

# 为什么父类型的引用可以指向子类型的对象?

自动实现向上转型。通过A a = b;语句,编译器自动将子类对象向上移动,成为A类型。

# a.play()将执行子类还是父类中定义的方法?

子类的。在运行时期,将根据a这个引用所指向的实际对象来获取相应的方法,这也是多态性。一个父类的引用,指向不同的子类对象,执行该方法时,将表现出不同的行为。

 

 

2.不能将子类引用指向父类对象

A a = new A();

B b = a; //这样是不行的,对比前面,可以知道父类不是子类(如同人不是男人)

 

 

 

在java中,向上转型是自动进行的,但是向下转型却不是,需要我们强制进行类型转换。如:

B b = new B();

A a = b;

B bb = (B)a;   //进行强制类型转换,也就是向下转型

 

 

final修饰

  final修饰类,表示该类不能被继承;

  final修饰非final类中的方法,表示该方法在子类中不能被重写。

 

Java中的动态绑定和静态绑定

https://www.jb51.net/article/161540.htm

 

继承的优缺点

在面向对象语言中,继承是必不可少的、非常优秀的语言机制,它有如下优点:

实现代码共享,减少创建类的工作量,使子类可以拥有父类的方法和属性。

提高代码维护性和可重用性。

提高代码的可扩展性,更好的实现父类的方法。

自然界的所有事物都是优点和缺点并存的,继承的缺点如下:

继承是侵入性的。只要继承,就必须拥有父类的属性和方法。

降低代码灵活性。子类拥有父类的属性和方法后多了些约束。

增强代码耦合性(开发项目的原则为高内聚低耦合)。当父类的常量、变量和方法被修改时,需要考虑子类的修改,有可能会导致大段的代码需要重构。

 

以上是关于Java 继承02的主要内容,如果未能解决你的问题,请参考以下文章

Java 继承02

java类的继承-保姆级篇

Java 中 Enum 如何继承?

阶段1 语言基础+高级_1-3-Java语言高级_02-继承与多态_第3节 接口_14_接口之间的多继承

day02(继承,重写,this,super,final,抽象类)

java 继承