继承就是 子继承父。
子类无条件拥有父类全部可继承的属性和方法。
继承通过 extends 关键字 实现。
在Java中只支持单继承,不允许多重继承,也就是说一个类只能有一个直接父类。
字类的方法和属性= 父类的方法和属性+子类新增的方法和属性。
继承的合理性:引用《大话西游》中的的一句话来描述继承“人,是人他妈生的",”妖,是妖他妈生的";
继承的作用:就是解决类中重复代码的问题。
继承的注意点:
1:继承是类在继承,而不是对象在继承。(每个对象之间是毫无关系的,对象的属性值相互之间不会影响)
注释:子类从父类继承,相当于子类拥有了父类的所有的成员,这个时候创建一个子类对象,这个时候子类对象不仅有属于自己的成员属性,还是从父类继承而来的成员属性。
2:什么时候需要使用继承?(is a关系)
当发现多个类具有相同的成员的时候,那么就可以使用继承了,将共同的成员定义在父类中,让子类去继承。
3:不要为了仅仅只是得到某个类的成员而去继承,不要为了继承而去继承。
注释: 语法上其实任意类都是可以继承的,但是情理逻辑上并不是任意类都可以继承的,只有满足A类是B类的时候,菜可以拥有继承关系。
继承强调的是同一个物种;
4:只要有一个成员或者方法不是所有子类都拥有的,那么这个成员属性和方法就不应该定义在父类之中。
5:子类一定不要拥有和父类同名的成员变量,因为子类可以继承父类的成员变量。
注释: 如果子类和父类定义了一模一样的成员变量,那么如果使用的是父类继承而来的方法进行访问成员属性,那么系统会优先在父类中进行查找,如果找到了,则直接使用,如果没有,则在子类中进行查找,反之,没有使用的是子类的方法,那么系统会在子类中进行查找,找到了则直接使用,如果没有,则在父类中进行查找。
6:一个类,只能继承一个父类,也叫单一继承。
java 不支持多继承,但是支持多重继承。
多重继承: B继承C A继承B 多重继承形成了JAVA的一种继承体系。
A中的方法和属性= B中的方法和属性+C中的方法和属性+自身的方法和属性.
四: 面向对象-方法重写
4.1 重写父类方法(override)
在继承关系中,子类会自动继承中定义的方法。但有时需要在子类中对继承而来的方法进行一些修改,即对父类的方法进行重写,需要注意的是,在子类中重写的方法需要和父类被重写的方法具有相同的方法名,参数列表以及返回值类型。
总结: 子类重新实现父类的方法,就是方法的重写。 执行的时候,如果从父类继承而来的方法被重写,那么优先执行子类中的方法。
说明:虽然子类也拥有父类的 行为,但是如果子类的这个行为实现的方式和父类的实现是不一样的,这个时候,子类就可以按照自己的方式重写父类的方法,那么通过子类调用这个方法时,调用的是子类自己重写的方法。如果没有进行重写,那么调用的是父类的方法。
class Person1111{
public void sayHi() {
System.out.println("大家好,我是人");
}
}
class Japanse extends Person1111{
public void sayHi() {
System.out.println("八嘎雅鹿");
}
}
class Korean extends Person1111{
public void sayHi() {
System.out.println("啊你哈斯有");
}
}
class Chinese extends Person1111{
public void sayHi() {
System.out.println("大扎好,我系扎扎辉.");
}
}
public class Demo003 {
public static void main(String[] args) {
Japanse jae =new Japanse();
jae.sayHi();
Korean ko =new Korean();
ko.sayHi();
Chinese ch =new Chinese();
ch.sayHi();
}
}

class Person1111{
public void sayHi() {
System.out.println("大家好,我是人");
}
}
class Japanse extends Person1111{
public void sayHi() {
System.out.println("八嘎雅鹿");
}
}
class Korean extends Person1111{
public void sayHi() {
System.out.println("啊你哈斯有");
}
}
class Chinese extends Person1111{
public void sayHi() {
System.out.println("大扎好,我系扎扎辉.");
}
}
public class Demo003 {
public static void main(String[] args) {
Japanse jae =new Japanse();
jae.sayHi();
Korean ko =new Korean();
ko.sayHi();
Chinese ch =new Chinese();
ch.sayHi();
}
}
继承体系中方法调用的顺序:
如: 在子类中,调用一个对象方法。
1:首先会在子类中查找该方法。
2: 如果子类中没有,则向上一层父类中查找。
3: 如果上一层父类中也没有,再向上一层爷爷中查找。
4: 直到Object类,如果还是没有,直接报错。
注意: 1:如果上面 某一层找到了 该方法,那么直接调用,不会再向上查找了。
2:子类重写父类方法时:不能使用比父类还要严格的访问权限。
访问权限: public protected 默认 private