JAVA基础进阶(一)

一、什么是继承

把相同的属性和行为抽离出来放到父类,再让子类使用extends关键字继承父类后,就可以直接使用父类公共的属性和方法了,提高了代码的复用性可以降低重复代码的书写。

子类既有自己类的属性和行为,也有父类的属性和行为。

二、继承的注意事项

  1. 只能单继承,一个子类只能有一个父类,不能有多个父类。
  2. 可以多层继承,子类的父类也可以有父类(子类的爷爷类)。
  3. 子类可以继承“祖宗类”的成员变量和成员方法(爷爷类、爷爷类的父类....等)。
  4. 私有成员变量也可以继承,但是不能直接访问,可以间接访问。
  5. 构造方法不能继承,但是子类可以调用父类的构造方法,父类构造方法不能用于创建子类对象。
  6. 在子类方法中访问成员遵循就近原则:先找子类,再找父类,父类找不到就报错。
  7. 子类重写父类方法时,私有方法不能被重写。

三、继承注意事项的理解 

对于第3点,子类可以继承父类、“爷爷类”、“爷爷类的父类......”的成员变量和成员方法。说通俗点,子类可以继承“祖宗类”所有的成员变量和成员方法。

对于第4点,私有成员变量是用private修饰的,所以它的访问范围只在本类中,所以子类当然不能直接访问,但是可以通过public修饰的set、get方法间接访问到私有成员变量。

代码演示:

Boy继承了Man

Man中有私有成员变量name,以及用public修饰的set、get方法。

Test1类中创建Boy对象,并用Boy对象访问成员变量name,发现编译报错:name has private access in ...... MAN。

但是可以通过public修饰的set、get方法间接访问到私有成员变量。

对于第5点

子类不能继承父类的构造方法,只能调用父类的构造方法。

子类的无参构造和有参构造都是默认会调用父类的无参构造,要想子类的有参构造调用父类的有参构造,加上super(参数1,参数2),就会调用父类的有参构造,就不再调用父类的无参构造。

如果父类中不存在无参构造器,也不存在有参构造器,是不会报错的,因为类会默认存在一个无参构造器。

如果父类不存在无参构造器,但是存在有参构造器,就会报错。因为子类的无参构造和有参构造都是默认会调用父类的无参构造,此时类也不会默认存在一个无参构造器,所以会报错。

演示一:父类中只存在有参构造会报错,因为子类的无参构造、有参构造默认会调用父类的无参构造。

父类中只存在有参构造

子类就会报错

演示二:如果子类中只存在有参构造,不存在无参构造,就不能使用子类的无参构造创建子类的对象。因为构造方法,都是用类名()、类名(参数1、参数2)这样的,子类和父类的名字不一样,所以构造方法不能继承,就不能使用父类的无参构造创建子类的对象。

子类Boy中只存在有参构造

父类中无参构造、有参构造都有

此时无法创建子类的无参构造对象

演示三:子类的无参构造和有参构造都是默认会调用父类的无参构造

子类中创建有参构造器和无参构造器:

父类中创建有参构造器和无参构造器:

Test1中使用无参构造创建子类对象

发现首先调用了父类的无参构造,再调用子类的无参构造。

Test1中使用有参构造创建子类对象

同样发现首先调用了父类的无参构造,再调用子类的有参构造。

子类的有参构造器中加上super(参数);

再在Test1中使用有参构造创建子类对象,发现首先调用了父类的有参构造,再调用子类的有参构造,此时不再调用父类的无参构造。

继承中构造方法总结:

1、构造方法不能继承,但是子类可以调用父类的构造方法,父类的构造方法不能用于创建子类对象。

2、子类的无参构造和有参构造都是默认会调用父类的无参构造

3、要想子类的有参构造调用父类的有参构造,加上super(参数1,参数2),就会调用父类的有参构造,就不再调用类的参构造

4、如果父类中不存在无参构造器,也不存在有参构造器,是不会报错的,因为类会默认存在一个无参构造器。

5、如果父类不存在无参构造器,但是存在有参构造器,就会报错。因为子类的无参构造和有参构造都是默认会调用父类的无参构造,此时类也不会默认存在一个无参构造器,所以会报错。

6、this();super();只能存在于构造方法的第一行,所以不能同时存在。

四、Idea中查看继承关系

4.1 Idea中查看子类的所有父类

这样就能很直观的展示一个类所有的父类

4.2 Idea中查看父类的所有子类

4.3 Idea中展示父类的所有子类

展示子类的所有父类

这种方式和4.1的效果一样,但是没有4.1更加直观!

参考网址:

IntelliJ IDEA 中如何查看一个类的所有继承关系,包括父类与子类 | 骐晔

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值