JAVA继承、接口、多态

一、继承
定义
继承:就是子类继承父类的属性和行为,使得子类对象具有与父类相同的属性、相同的行为。子类可以直接 访问父
类中的非私有的属性和行为。
好处
1、 提高代码的复用性。
2、类与类之间产生了关系,是多态的前提。

其中,多个类可以称为子类,单独那一个类称为父类、超类(superclass)或者基类
继承的特点
1、 Java只支持单继承,不支持多继承。
2、 一个类可以有多个子类。
3、 Java支持多层继承(继承体系)。
顶层父类是Object类。所有的类默认继承Object,作为父类。
4、子类和父类是一种相对的概念。

抽象类
父类中的方法,被它的子类们重写,子类各自的实现都不尽相同。那么父类的方法声明和方法主体,只有声明还有
意义,而方法主体则没有存在的意义了。我们把没有方法主体的方法称为抽象方法。Java语法规定,包含抽象方法
的类就是抽象类。
定义
抽象方法 : 没有方法体的方法。
**抽象类:**包含抽象方法的类。
使用 abstract 关键字修饰方法,该方法就成了抽象方法,抽象方法只包含一个方法名,而没有方法体。
抽象的使用
继承抽象类的子类必须重写父类所有的抽象方法。否则,该子类也必须声明为抽象类。最终,必须有子类实现该父
类的抽象方法,否则,从最初的父类到最终的子类都不能创建对象,失去意义。
二、接口
引用数据类型:数组,类,接口
接口的使用,它不能创建对象,但是可以被实现( implements ,类似于被继承) 。一个实现接口的
类(可以看做是接口的子类),需要实现接口中所有的抽象方法,创建该类对象,就可以调用方法了,
否则它必须是一个抽象 类。
抽象方法:使用 abstract 关键字修饰,可以省略,没有方法体。该方法供子类实现使用
实现的概述
类与接口的关系为实现关系,即类实现接口,该类可以称为接口的实现类,也可以称为接口的子类。实
现的动作类 似继承,格式相仿,只是关键字不同,实现使用 implements 关键字。
非抽象子类实现接口:
1、必须重写接口中所有抽象方法。
2、继承了接口的默认方法,即可以直接调用,也可以重写。

抽象方法的使用
必须全部实现
默认方法的使用
可以继承,可以重写,二选一,但是只能通过实现类的对象来调用。
静态方法的使用
静态与.class 文件相关,只能使用接口名调用,不可以通过实现类的类名或者实现类的对象调用
接口的多实现
在继承体系中,一个类只能继承一个父类。而对于接口而言,一个类是可以实现多个接口
的,这叫做接 口的多实现。并且,一个类能继承一个父类,同时实现多个接口。

抽象方法
接口中,有多个抽象方法时,实现类必须重写所有抽象方法。如果抽象方法有重名的,只需要重写一
次。
默认方法
在实现多个接口中,如果多个接口中包含有同名方法,子类必须实现实现该方法。
静态方法
接口中,存在同名的静态方法并不会冲突,原因是只能通过各自接口名访问静态方法。
优先级的问题
当一个类,既继承一个父类,又实现若干个接口时,父类中的成员方法与接口中的默认方法重名,子类
就近选择执 行父类的成员方法。

接口的多继承【了解】
一个接口能继承另一个或者多个接口,这和类之间的继承比较相似。接口的继承使用 extends 关键
字,子接口继 承父接口的方法。如果父接口中的默认方法有重名的,那么子接口需要重写一次。
其他成员特点
接口中,无法定义成员变量,但是可以定义常量,其值不可以改变,默认使用public static final修
饰。
接口中,没有构造方法,不能创建对象。
接口中,没有静态代码块。
接口中成员变量默认加上public static final修饰

三、多态
概述
引入
多态是继封装、继承之后,面向对象的第三大特性。
生活中,比如跑的动作,小猫、小狗和大象,跑起来是不一样的。再比如飞的动作,昆虫、鸟类和飞
机,飞起来也 是不一样的。可见,同一行为,通过不同的事物,可以体现出来的不同的形态。多态,描
述的就是这样的状态。
定义
多态: 是指同一行为,具有多个不同表现形式。
前提【重点】
1、继承或者实现【二选一】
2、方法的重写【意义体现:不重写,无意义】
3、父类引用指向子类对象【格式体现】

多态的体现
多态体现的格式:
父类类型 变量名 = new 子类对象;
变量名.方法名();

父类类型:指子类对象继承的父类类型,或者实现的父接口类型。
当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,执行的
是子类重写 后方法。
多态的好处
实际开发的过程中,父类类型作为方法形式参数,传递子类对象给方法,进行方法的调用,更能体现出
多态的扩展 性与便利。
多态的好处,体现在,可以使程序编写的更简单,并有良好的扩展。
引用类型转换
多态的转型分为向上转型与向下转型两种:
向上转型
向上转型:多态本身是子类类型向父类类型向上转换的过程,这个过程是默认的。当父类引用指向
一个子类对象时,便是向上转型。
向下转型
向下转型:父类类型向子类类型向下转换的过程,这个过程是强制的。一个已经向上转型的子类对
象,将父类引用转为子类引用,可以使用强制类型转换的格式,便是向下转型。
为什么要转型
当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误。也就是说,不能
调用子类拥 有,而父类没有的方法。编译都错误,更别说运行了。这也是多态给我们带来的一点"小麻
烦"。所以,想要调用子 类特有的方法,必须做向下转型。

你可能感兴趣的:(java基础,java继承,接口,多态)