【无标题】

继承

继承的理解

  • 继承的类叫做子类,或派生类。由多个类抽取出来的这个类称为父类、超类或基类。

  • 继承描述事物的所属关系——>is-a。

  • 继承就是子类继承父类的属性和行为,使子类拥有和父类相同的属性与行为。

继承的好处

  1. 提高代码的复用性

  2. 提高代码的扩展性

  3. 类与类产生了关系,是多态的前提。

继承的格式

通过extends关键字来声明一个类是另一个类的子类

 class 父类类名 {
     ... 
 }
 ​
 class 子类类名 extends 父类类名 { 
     ... 
 }

eg:

 
package com.ryan.animals;
 ​
 //被继承类
 public class Animal { 
     //姓名
     public String name;
     //年龄
     public int age;
 ​
     //吃
     public void eat(){
         System.out.println(age +"岁的"+name+"在吃东西");
     }
 ​
 }
 ​
 //继承类
 public class Cat extends Animal {
     public void catchMouse(){
         System.out.println("抓老鼠");
     }
 }
 ​
 ​
 //测试类
 public class CatTest{
     public static void main(String[] args) {
         Cat cat = new Cat();
         cat.name = "Tom";
         cat.age = 2;
 ​
         cat.catchMouse();
         cat.eat();
 ​
     }
 }
 ​
 ​

继承的特点一:成员变量

私有化(private)

  • 父类中的成员,无论是共有还是私有,均会被子类继承。

  • 但子类不能直接对父类的私有成员进行访问,可通过公有方法访问(get/set)

成员变量重名

  • 子父类的成员变量不重名对访问时没有影响的。

  • 当字符变量重名时,要使用super关键字来标明(非私有)父类变量,类似于this。

  • 格式:

  •  super.父类成员变量

继承特点二:成员方法

方法不重名

调用不受影响,对象调用方法时,会先在子类中查找有没有对应的方法,若子类中存在就会执行子类中的方法,若子类中不存在就会执行父类中相应的方法。

方法重名

这是一种特殊的情况,叫做方法的重写(Override)

重写

子类中出现与父类一模一样的方法时(返回值类型,方法名和参数列表都相同),会出现覆盖效果,也称为重写或者复写。声明不变,重新实现

 class Phone { 
     public void sendMessage(){ 
         System.out.println("发短信"); 
     }
     public void call(){ 
         System.out.println("打电话"); 
     }
     public void showNum(){ 
         System.out.println("来电显示号码"); 
     } 
 }
 //智能手机类 
 class NewPhone extends Phone {
     public void sendMessage(){ 
         System.out.println("发短信"); 
         System.out.println("发彩信"); 
     }
 }
 public class ExtendsDemo06 { 
     public static void main(String[] args) { 
         // 创建子类对象 
         NewPhone np = new NewPhone(); 
             // 调用父类继承而来的方法 
             np.call(); 
         // 调用子类重写的方法 
         np.showNum(); 
     } 
 }
 ​
 ​

 在父子类的继承关系当中,创建子类对象,访问成员方法的规则: 
 创建的对象是谁,就优先用谁,如果没有则向上找。 
 注意事项: 
     无论是成员方法还是成员变量,如果没有都是向上找父类,绝对不会向下找子类的。 
 重写(Override) 概念:在继承关系当中,方法的名称一样,参数列表也一样。 重写(Override):方法的名称一样,参数列表【也一样】。覆盖、覆写。 
 重载(Overload):方法的名称一样,参数列表【不一样】。 
 方法的覆盖重写特点:创建的是子类对象,则优先用子类方法。 
 方法覆盖重写的注意事项:

重写的应用

子类可以根据需要,定义特定于自己的行为。既沿袭了父类的功能名称,又根据子类的需要重新实现父类方法,从而进行扩展增强。

注意事项:

  1. 必须保证父子类之间方法的名称相同,参数列表也相同。

@Override:写在方法前面,用来检测是不是有效的正确覆盖重写。

这个注解就算不写,只要满足要求,也是正确的方法覆盖重写。

  1. 子类方法的返回值类型必须【小于等于】父类方法的返回值类型(小于其实就是是它的子类)。小扩展提示:java.lang.Object类是所有类的公共最高父类(祖宗类),java.lang.String就是Object的子类。

  2. 子类方法的权限必须【大于等于】父类方法的权限修饰符。小扩展提示:public > protected > 缺省 > private

备注:缺省不是汉字缺省,而是什么都不写,留空

构造方法

  1. 子类无法继承父类的构造方法

  2. 子类初始化过程中,必须先执行父类的初始化动作。

  3. 子类的构造方法中用super(),表示调用父类的构造方法,初始化父类成员变量后,子类才能用

eg:

 class Fu { 
     private int n; 
     Fu(){ 
         System.out.println("Fu()"); 
     } 
 }
 ​
 class Zi extends Fu { 
     Zi(){ 
     // super(),调用父类构造方法 
         super(); 
         System.out.println("Zi()"); 
     } 
 }
 ​
 public class ExtendsDemo07{ 
     public static void main (String args[]){ 
         Zi zi = new Zi(); 
     } 
 }
 输出结果: Fu() Zi() 11
     

继承的注意事项

  1. Java只支持单继承,不支持多继承————一个类只能有一个父类。

  2. Java支持多层继承,A ex B,B ex C。

  3. 继承的顶层是Object,Object是所有类的默认父类。

  4. 子父类是一种相对概念。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值