Java:继承、super、this、抽象类

1、继承的概念及意义

面向对象

​ 1)、封装 private+get/set+构造方法

​ 2)、继承 extends

​ 1)、提高代码的复用性

​ 2)、多态的前提

​ 3)、多态

1)、多个类有相同的成员

2)、定义一个新的类 ,只定义相同的成员

3)、其他类继承(extends)这个类

4)、自己也可以定义自己特有的成员

2、继承的格式及特点

格式

public class 父类{
    //只能定义子类中相同的成员
}
public class 子类 extends 父类{
    //自动拥有父类中的非私有成员,直接可以使用
    //必须要有自己特有的成员
}

父类:基类、超类

子类:派生类

子类可以直接访问父类中的非私有的属性和行为

3、继承后的特点-成员变量

1)、子类父类,成员变量不重名,没有影响

2)、子类父类,成员变量重名,就近原则

就近原则:先找子类的成员,有就直接使用,没有再去父类找

开发中要避免成员变量重名

4、继承后的特点-成员方法

子类父类中,成员方法重名,就近原则

开发中,成员方法会重名大量使用,重写

5、方法重写

重载overload

​ 一个类中,多个方法名相同的方法,参数列表不同

​ 1)、类型不同

​ 2)、个数不同

​ 3)、顺序不同

非常常用

重写override

​ 1)、变量没有重写一说

​ 2)、继承关系中,父类定义一个与父类一模一样的方法

​ 1-方法名一样

​ 2-返回值类型必须一样

​ 3-参数列表必须一样

​ 3)、子类可以修改方法体

子类可以通过重写父类方法来修改方法体,对该方法进行拓展

6、方法重写的注意事项

1)、一模一样的

​ 1-方法名一样

​ 2-返回值类型必须一样

​ 3-参数列表必须一样

重写又叫覆盖

权限(子类重写权限必须大于父类中方法的权限):

public>protected>默认(留空)>private

2)、在开发中,使用注解@Override放在方法,让javac编译器,检测重写是否成功

3)、在开发中,使用alt+Ins菜单,选重写

7、继承后的特点-构造方法

1)、private的成员跟继承无关

2)、构造方法跟继承无关

8、继承后的特点-内存

1)、子类对象创建

1-先创建父类部分 - 执行父类的构造方法

2-再创建子类对象 - 执行子类的构造方法

​ 3子类对象包含了

9、this和super关键字

this 指向子类对象空间的引用

super 指向父类对象空间的引用

使用this和super区分子类与父类重名的变量和方法

使用格式:

this.成员变量名
super.成员变量名
**只能在子类方法中使用**
super.成员方法名()//执行父类中的方法
this.成员方法名()//执行子类中的方法

10、this()与super()

this() 表示执行子类的构造方法

super() 表示执行父类的构造方法

如果有参数,必须传参

只能在子类构造方法的第一行使用

在子类构造方法中只能调用super()或this()

11、单继承

一个子类只能继承一个父类(单继承)

为了调用安全

一个父类可以有多个子类,但一个子类只能有一个父类

12、多层继承

一个子类只能有一个父类,这个父类也可以有父类

产生继承体系

13、抽象类-概念

如果父类中的方法,所有子类都要重写,没有意义

那就要将这个方法写成抽象方法

有抽象方法的类就是抽象类

在开发中,表示强制的意思,为了统一命名

14、抽象类-定义格式及成员

abstrat 关键字,修饰

开发中抽象类的类名前面加Abs

public abstract class 类名{
    //可以没有抽象方法
}
public abstract 返回值类型 方法名();

抽象方法必须在抽象类中

抽象类中可以没有抽象方法

public class 子类 extends 抽象类{
    //必须重写抽象类中的抽象方法,否则必须也是抽象类;
}

15、抽象类-注意事项

1)、抽象类不能直接创建对象

2)、抽象类就是让子类继续重写的

复习

  • [ ] 能够解释类名作为参数和返回值类型

  • [ ] 能够写出类的继承格式

    public class fu{}
    public class zi extends fu{}
  • [ ] 能够说出继承的特点

    子类继承父类,可以直接访问父类中所有的非私有成员变量和成员方法

  • [ ] 能够说出子类调用父类的成员特点

  • [ ] 能够说出方法重写的概念

    子类中重写父类的方法,方法的返回值,方法名,参数必须一致,子类对该方法体中的内容可以进行扩展,实现重写

  • [ ] 能够说出super可以解决的问题

    super可以解决子类和父类中变量重名,方法名重名的问题。不使用super时,会遵从就近原则直接调用子类的成员变量和成员方法

  • [ ] 描述抽象方法的概念

    子类都要重写且没有方法体的方法,被abstract所修饰

  • [ ] 写出抽象类的格式

    public abstract class 类名{}
  • [ ] 写出抽象方法的格式

    public abstract 返回值类型 方法名(参数){}
  • [ ] 能够说出父类抽象方法的存在意义

    父类中的抽象方法,子类必须重写,对所有子类都有的方法做出统一的要求

  • [ ] 能够完成发红包案例的代码逻辑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值