继承与抽象

继承与抽象

继承

定义:把所有类相同的属性行为抽象出来,单独定义一个类,使子类可以访问父类中非私有的属性和行为,提高代码复用性。

继承的代码形式

  • 父类定义形式和一般类相同
  • 子类定义用关键字extends
class 父类 {
...
}
class 子类 extends 父类 {
...
}

子类与父类的关系

重名
  • 若是方法重名,则先在本类中进行寻找,找不到自动向父类进行寻找。

  • 若是属性重名,则若直接调用本类属性,找不到自动向父类进行查询。

若是使用方法间接调用,则先调用本方法所在的类的属性,若是子类,则找不到后自动向父类进行寻找,若是父类则不在寻找。

  • 为区分关系,分别以下用关键字进行区别

局部变量:直接写

本类变量:使用this.关键字

父类变量:使用super.关键字

不重名
  • 不重名则直接调用
覆盖重写
  • 与重载的区别

重写:子类与父类方法名称相同,参数相同,返回值的类型小于和等于父类的值

重载:名称相同,参数不同。

  • 注意事项

1.必须保证父子类之间方法的名称相同,参数列表也相同。
@override:写在方法前面,用来检测是不是有效的正确覆盖重写。
这个注解就算不写,只要满足要求,也是正确的方法覆盖重写。

2.子类方法的返回值必须【小于等于】父类方法的返回值范围。
小扩展提示:java.Lang.Object类是所有类的公共最高父类(祖宗类),java.Lang.string就是object的子类。
3.子类方法的权限必须【大于等于】父类方法的权限修饰符。
小扩展提示:public>protected>(default)>private

​ 备注:(default)不是关键字default,而是什么都不写,留空。

  • 重写的方法中,如果需要调用父类中相同的方法代码,可用super,调用。

继承中的构造方法

继承关系中,父子类构造方法的访间特点:

1.子类构造方法当中有一个默认隐含的“super()”调用,所以一定是先调用的父类构造,后执行的子类构造。
2.子类构造可以通过super关键字来调用父类重载构造。
3.super的父类构造调用,必须是子类构造方法的第一个语句。有且只能有一个

​ 总结:子类构造方法中必须调用父类构造方法,不写则赠送super();写了则用写的指定的super调用,super必须放在子类构造方法色首位,有且只有一个。

关键字super的用法

  • 子类中调用父类成员属性
  • 子类调用父类成员方法
  • 子类构造方法调用父类构造方法

关键字this的用法

super关键字用来访问父类内容,而this关键字用来访间本类内容。
用法有三种:
1.在本类的成员方法中,访问本类的成员变量。
2.在本类的成员方法中,访问本类的另一个成员方法。
3.在本类的构造方法中,访问本类的另一个构造方法。
	在第三种用法当中要注意:
    A.this(..)调用也必须是构造方法的第一个语句,有且只有一个。
	B.superthis两种构造调用,不能同时使用,即使用this关键字后,则系统不再赠送super()。

Java继承的三个特点

  • 继承是单继承
  • 继承是多级继承
  • 一个父类可以有多个子类

抽象

抽象方法

  • 使用 abstract 关键字修饰方法,该方法就成了抽象方法,抽象方法只包含一个方法名,而没有方法体。

  • 定义格式:

修饰符 abstract 返回值类型 方法名 (参数列表)

抽象类

  • 抽象方法必然在抽象类中,但抽象类中不一定有抽象方法,同时抽象类中也可包含普通成员方法。不包含抽象方法的抽象类目的就是为了让使用者不能直接创造对象,要间接使用它

  • 定义格式:

    abstract class 类名字 {
    
    }
    
抽象类的使用
  1. 抽象类不能直接创建对象,只可以被子类继承使用。

  2. 抽象中的抽象方法必须全部被子类重写变成具体方法后使用。否则子类包含抽象方法,亦是抽象类,不能直接创造对象,只可以被继承使用。

  3. 抽象类的调用必须由子类创建对象后,由子类调用。

  4. 抽象类中可以有构造方法,供子类创建对象时,初始化父类成员使用

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值