好的,我们今天来谈谈什么是继承吧,为什么要使用继承呢?
为了减少重复性的代码,类是对对象的抽象,继承是对某一批类的抽象,从而实现对现实世界更好的建模。
- 可以有效的提高代码的复用性!
- extends的意思是“扩展”。子类是父类的扩展
- 继承的其他叫法:超类,父类,基类,子类,派生类
- 如图所示:
- 我们通过继承可以简化类的定义,实现代码的重用
- 子类继承父类的成员变量和成员方法,但不继承父类的构造方法。
- java中只有单继承,没有像c++那样的多继承。
- java中的多继承,可以通过接口来实现
- 如果定义一个类时,没有调用extends,则它的父类的java.lang.Object
单根性,在Java中,类的继承是单继承,一个类只能有一个直接父类。 传递性,例如:C继承于B,B继承于A,C也具有A的特性和行为。 即子类继承父类,子类拥有父类非私有的属性和方法。
super 关键字
super表示父类,它只是一个简单的关键字,用于引用父类。super没有内存地址,其不包含引用。super访问父类非私有属性
public
访问修饰符
分为四种:private,default(默认),protected,public
各自修饰符作用的范围如下:
- public:公共的,访问权限最大。
- protected:受保护的,子类都可见,同包可见
- 默认:包访问权限,同包可见。
- private:私有的,只有本类可见。
访问权限依次为:private<默认<protected<public
方法的重写
完全重写:当父类继承过来的方法完全不满足子类需要时。当子类继承子类的方法不能满足自身需要的时候,子类可以重写父类的同名方法。
重写可根据重写的程度分为完成重写和部分重写。
public
部分重写:当继承父类的方法还可以满足自身需要时,但还需要改进。 public
方法重写的规则:
- 方法存在继承关系
- 方法名相同,参数列表相同
- 方法的返回值要么和父类相同,要么是其(父类的)子类。
public
4.访问修饰符不能比父类更小。即private方法不能被继承,就不可能有重写。
注意:构造方法不能被重写,因为重写构造方法,因为构造方法和类重名,子类不可能和父类重名。
方法重写和重载的区别:
抽象类
在继承过程中,C extends B extends A,整个继承过程形成继承链。在继承链的过程中,位于顶端的类越来越抽象,位于末端的类越来越具体,整个过程形成继承金字塔。抽象方法
当一个类定义一个方法根据自身特性无法实现时,可以把该方法声明为抽象方法(abstract method),该抽象方法所在的类称为抽象类(abstract class)。抽象方法的语法
[修饰符] abstract 返回值类型 方法名(形参列表);抽象类语法
[
注意:
- 抽象类不能实例化=>抽象类限制实例化。
- 抽象方法一定位于抽象类中,抽象类中可以没有抽象方法。
- 子类继承抽象父类,一定要实现抽象类中的抽象方法,除非子类也是抽象类。
方法的实现:
子类继承抽象父类,必须重写抽象父类中的抽象方法,是对抽象父类中抽象方法的完全性重写。我们把这个过程称为方法的实现。实现是一种特殊的重写。
好了,今天大饼我就先分享到这吧,我们下期见~