继承概念和用法


继承就是  子继承父。
子类无条件拥有父类全部可继承的属性和方法。

继承通过 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();
		 
	}
}


继承体系中方法调用的顺序:

  如: 在子类中,调用一个对象方法。

1:首先会在子类中查找该方法。

2:  如果子类中没有,则向上一层父类中查找。

3:  如果上一层父类中也没有,再向上一层爷爷中查找。

4:  直到Object类,如果还是没有,直接报错。

注意:  1:如果上面 某一层找到了 该方法,那么直接调用,不会再向上查找了。

          2:子类重写父类方法时:不能使用比父类还要严格的访问权限。

访问权限: public   protected  默认   private  



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值