继承
什么是继承
继承的概念
继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
继承: java面向对象三大特征之一
含义: 子类继承父类,可以直接使用父类的属性和方法(主要使用方法)
父类: 有时候也会被别人叫做 超类、基类。
关键字: extends
继承: 类和类之间的关系
继承的作用
子类拥有父类的属性和方法,减少重复的代码,维护性高。
代码简洁,提高了代码的复用性。
继承的特性
子类拥有父类非 private 的属性、方法
子类可以拥有自己的属性和方法,即子类可以对父类进行扩展
子类可以用自己的方式实现父类的方法
提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系越紧密,代码独立性越差)
Java 的继承是单继承,但是可以多代继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如 A 类继承 B 类,B 类继承 C 类,所以按照关系就是 C 类是 B 类的父类,B 类是 A 类的父类,这是 Java 继承区别于 C++ 继承的一个特性
继承的关键字
继承关键字
class——定义类
interface——定义接口
extends——继承父类
implements——实现接口
extends和implements的区别
相同点
都属于Java中的继承
都发生在多各类中
不同点
extends只能单继承,implements可以实现多继承
extends继承父类时,父类中可以存在方法的默认实现
而implements在实现接口时接口中不能有方法实现
extends发生在子类和父类之间,implements发生在实现
类和接口之间
继承的优点
提高代码的复用性
子类中重复的代码只需要在父类中写一遍,所有子类都可以应用
提高代码的可维护性
只需要修改父类属性和方法,所有的子类都会应用
提高类和类之间的关联性,为多态做基础
其实这也是继承的缺点,增加了类和类之间的耦合度,耦合度的增加意味着后期扩展性的降低
抽象类
抽象类的定义
抽象类的概念
在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
抽象类:被abstract修饰的类就叫抽象类
把一些类的共同特征抽取出来,放到一个类中,这个类就叫抽象类。
抽象类的特性
抽象类不能被实例化
由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用
在Java中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口
特点:
1 抽象类可以有构造方法,但是不能创建对象,抽象类的构造方法是给成员变量初始化的。
2 抽象类中可以有普通的成员变量,也可以有静态成员变量
3 抽象类里面有抽象方法,普通类里面不能有抽象方法
4 普通类继承了抽象类,必须重写抽象类中的抽象方法
5 抽象类也可以有普通的方法。
注意: 抽象类天生就是当爹的。
抽象类和普通类的区别
抽象类不能被实例化
普通类可以被实例化
抽象方法无方法体
普通方法有方法体