什么是继承extends?:
继承是一种机制,通过继承机制,子类可以使用父类中属性和方法
父类----子类 一般 —特殊
父类:子类的共性抽象出来
子类继承父类,表明子类是一种特殊的父类,并且具有父类所不具有的一些属性或方法。
如果子类能够访问父类的d属性和方法,即是子类从父类中继承的属性和方法
(哪些属性和方法能被继承取决于子类能否突破父类的边界)
子类能够继承父类哪些内容???
构造方法不可被继承
原因:i.构造方法名必须和类名保持一致
ii. 子类中的内容要比父类中要多,构造过程相对父类较复杂,
需要子类有自己的构造方法
属性和方法能否被继承,取决于访问修饰符 本类 同包子类 非同包子类 其他 private(私有的) √ × × × default(默认的) √ √ × × protected(受保护的) √ √ √ × public(公开的) √ √ √ √ 从严到宽 i.所有的访问修饰符都可以修饰方法、构造方法、属性 只有 default、public 能够修饰类 ii.继承性: - Private 私有的,本类内部 子类不能继承 - Default 本类内部+同包 可以访问 同包子类可以继承 - Protected 受保护的 本类内部+同包+不同包子类 子类可以继承 - Public 公开的 不受边界约束 子类可以继承
继承关系下的对象创建过程:
①在继承关系下,去构建子类对象,会先去构建父类对象
②i.分配空间(父类+子类)
ii.构建父类对象(初始化父类属性+调用父类构造方法)
iii.初始化子类属性
iv.调用子类构造方法
下面用一个程序来详细解释一下继承的使用:
class TestExtend{ public static void main(String[] args) { Dog dog = new Dog(); //dog类里面并没有eat()和sleep()方法,所以dog对象调用的是父类的吃和睡觉方法; dog.eat(); dog.sleep(); } } class Animal{ public void eat(){ System.out.println("吃吃吃"); } public void sleep(){ System.out.println("睡觉,睡10个小时"); } } class Dog extends Animal{ //这里不定义任何方法, }
Java中 的单继承:
java中是单继承
但是是多级继承,属性和方法可以进行逐级叠加
一个类最多只能有一个直接父类;extends 只能放一个类的类名;
提现了java的简单性: 即类之间会行成简单的树状结构