面向对象 第五课 继承

面向对象 第五课 继承


在面向对象编程中,可以通过扩展一个已有的类,并继承该类的属性和方法,来创建一个新的类,这种方式称为继承


我们由飞机类plane派生出一个新类,轰炸机类 Bomber使用extends关键字让它继承自Plane类


我们称飞机类Plane为父类(基类),轰炸机类Bomber为Plane的子类(派生类)。


两个类之间存在继承关系,将有如下特点:
1>子类拥有父类的所有属性,即在父类中声明的属性,在子类内部可以直接调用;
2>子类拥有父类的所有方法,即在父类声明的方法在子类内部也可以直接调用;
***3>子类不拥有父类的构造器,如果需要在子类内部使用和父类传入的参数一样的构造器,则需要在子类内部重新声明构造器方法。
***4>子类类型是父类类型,即子类类型的对象可以自动转换为父类类型的对象;父类类型的对象则需要强制转换位子类的对象,转换的语法与基本数据类型相同。


子类创建对象的时候会默认创建父类的对象。


super从子类访问父类有参构造器


调试方法:
1>增加调试打印信息
2>增加断点调试


如何判断类具有继承关系
类与类的关系:
has-a(组合):代表的是对象和它的成员的从属关系。比如汽车和轮胎的关机,电脑和显示器的关系。
is-a(继承):代表的是类之间的继承关系。比如汽车和火车的关系,飞机和轰炸机的关系。


组合的特点是什么东西有什么什么东西。


继承的优点:代码的可重用性;父类的属性和方法可用于子类;子类可以扩展父类的属性和方法;设计应用程序变得更加简单。


在java中,只支持单继承(子类只能继承一个父类),不支持多继承。


为什么java中只允许单继承
在java语言中,禁止多继承,原因是多继承容易意义不明确,增加了程序员编程的复杂度,甚至进一步影响多态的灵活性。


Object类
所有类的根类都是Object类


一个类如果没有继承任何类,则默认继承Object类。


方法重写
当一个子类继承了一个父类时,它同时继承了父类的属性和方法。子类可以直接使用父类的属性和方法,如果父类的方法不能满足子类的需求,则可以在子类中对父类的方法进行重新实现,而这种方式就叫方法重写(或覆盖)。


方法重写(或覆盖)的规则:
1>重写方法的参数列表必须与被重写的方法完全相同;
2>重写方法的返回值类型也必须与被重写的方法的返回值类型一致;
3>重写方法的访问修饰符一定要大于被重写的方法的访问修饰符(public --> protected --> default --> private)
4>重写方法所抛出的异常必须和被重写的方法所抛出的异常一致或者是其子类;
5>被重写的方法访问修饰符不能为private;
6>静态方法不能被重写为非静态方法,会导致编译出错。


方法重写和方法重载的区别:
1>重写必须继承,重载不需要;
2>重写的方法名、参数数目相同,参数类型也相同;而重载的方法名相同,参数列表不同;
3>重写的方法访问修饰符大于等于父类的方法,重载和修饰符无关;
4>重写不可以抛出父类没有抛出的一般异常。


super关键字


super的两种用法:
1>super.***或super.***()代表每个类中指向父类对象部分的引用
2>super()代表调用父类中指定的构造器。


super()只能放在构造器的第一句!


this和super的区别


1>this在调用时不需要继承关系,super则需要继承关系才能调用;
2>this可以在构造器内是子类调用父类的构造器。


final关键字


是一个修饰符,表示不可以有继承的子类,所以称为终态类。


final的使用
当设计者设计的类不希望被任何人继承,从而去修改或扩展时,就可以使用final关键字,声明为最终类。如java的设计者不允许继承String类,因为它是java语言中一个十分重要的类,改变方法的行为,从而带来不希望的结果。通过使String类成为最终类,就能确保String对象的实现是一致性的和可靠的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值