面相对象的第二个特征:继承
继承是“类与类”之间的关系,比如,狗类继承动物类。不过说明的是,每个类只能继承一个类。
继承的好处:子类拥有父类的所有属性和方法。(当然,属性和方法的修饰符不能是private)
关键字:extends
public class Dogs extends Animal{}
Java中extends 与 implement 区别
简单说:
1.extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承,
2.JAVA中不支持多重继承,但是可以用接口来实现,这样就要用到implements,
3.继承只能继承一个类,但implements可以实现多个接口,用逗号分开就行了 ,
术语话来说:
在继承的时候,是可以实现方法的重写的
面向对象最后一个特性:多态
多态:对象的多种形态
【继承是实现多态的基础】
1.引用多态
父类的引用可以指向本类、子类的对象
2.方法多态
多态中的引用类型转换:
1.向上类型转换 小类型——大类型
2.向下类型转换 大类型——小类型
解决类型转换的安全性问题:instanceof
创建一个子类对象dog = new dog();
再用子类的引用指向这个对象 Dog dog = new Dog();
用父类的引用指向这个子类对象 Animal animal = dog 这就叫自动类型提升、向上类型转换
Dog dog2 = (Dog)animal 向下类型转换、强制类型转换
3.java中的抽象类
在定义类时,前面用abstract
应用场景:某个父类只知道其子类应该包含怎样的方法,却无法准确知道这些子类如何实现这些方法
抽象类:是约束子类“必须”有哪些方法,而不关注如何实现。
抽象类的目的:不关注子类的实现,但是约束子类有哪些特征
abstract class XXX{
定义函数时只需要写函数名() 不用加大括号
}