1. 继承的定义:
子类继承于父类,父类又叫基类或者超类,在父类中定义共有的属性和方法;子类又叫派生类,子类中定义特有的属性和方法。
2. 继承的实现:
通过extends关键字来实现继承,如:
public class Animal{ //父类是 Animal
}
public class Cat extends Animal{ //子类是 Cat,继承于Animal类
}
3. 访问控制权限:
(1). public:表示公共的,其修饰的类,方法,属性等在整个项目中都能够访问的到。
(2). protected:表示受保护的,其修饰的类,方法,属性等可以被同包的子类或非子类访问,也可以被跨包的子类访问。因此我们在定义父类属性是可以使用protected修饰。
(3). 默认的:其修饰的类,方法,属性等可以被同包的子类或非子类访问。
(4). private:表示私有的,其修饰的类,方法,属性等只能在自己类中使用。
4. 继承的特点:
(1). 在继承关系中,子类比父类更加强大,父类可以做的事,子类都可以做。
(2). 在继承关系中,子类默认会继承父类中的所有公共的成员( 构造方法除外 ),如果父类中的一些成员不想被子类继承,则可以用private来修饰这些成员。
(3). 在继承关系中,父类的构造方法是不可以被子类继承的。
5. super关键字:
super关键字可以用来调用属性,方法和构造方法。
(1). " super . 属性 ":表示在子类中调用父类的属性。
(2). " super . 方法名( [ 参数列表 ] ) ":表示在子类中调用父类的方法。
(3). " super( ) ":表示在子类中调用父类的无参构造方法。
(4). " super( [ 参数列表 ] ) ":表示在子类中调用父类的有参构造方法。
使用super( )或super( [ 参数列表 ] )语句调用父类的构造方法时,当创建子类对象的时候,默认会调用父类的无参构造方法。
在构造方法中使用super( )或super( [ 参数列表 ] )语句时,该语句必须位于第一行。当构造方法相互调用时,this和super关键字只能出现一个。
6. 实例化子类对象时的访问顺序:
实例化子类对象时的访问顺序遵循三个原则:父类优先,静态优先,属性优先。
实例化子类对象时的访问顺序:(1). 父类静态属性。
(2). 父类静态代码块。
(3). 子类静态属性。
(4). 子类静态代码块。
(5). 父类普通属性。
(6). 父类构造代码块。
(7). 父类构造方法。
(8). 子类普通属性。
(9). 子类构造代码块
(10). 子类构造方法
注意:其中普通属性和构造代码块谁在前就会先执行谁;只是我们习惯先写属性再写代码块。