对象的三大特性(封装、继承、多态)之------继承性 + 覆写
来源:互联网 发布:freertos源码详解 编辑:程序博客网 时间:2024/06/06 09:19
继承
1、引入
继承性的最大特征是解决代码的重用问题。
为什么需要继承? 有属于关系,例如学生属于人的一种,人所具有 的属性学生都具有。
2、继承的实现
在JAVA中如果要实现继承需使用extends关键字,定义语法为: class 子类 extends 父类 { } ,子类:派生类,父类:基类或超类
继承的优点:
①子类可以将父类的操作继续使用,属于代码重用;
②子类可以继续扩充属于自己的标准。
3、继承的限制
继承有自己的要求:
①JAVA不允许多重继承(C++语言有多继承——一个子类可以同时继承多个父类的操作),这种情况可以使用多层 继承。在使用多层继承的时候并没有层数的限制,但在开发角度来说最好不要超过三层,因为-----多人传话会容易出错。
②子类会继承父类的所有操作,但是所有的私有操作属于隐式继承,所有的非私有操作属于显示继承。即:在子类中不能对父类进行私有属性(private)的直接访问,只能够间接的进行私有属性的访问,在这里私有属性还是相当于在不同 的类中。
③在子类对象构造之前一定会先默认调用父类的构造(默认使用无参构造),以保证父类的对象先实例化,而后再实例化子类对象。
!!“super();” 相当于父类,若父类中有无参构造加与不加无区别。如果父类中无无参构造方法,那么必须使用super();明确调用父类中的有参构造方法。
class A{
public A(String title){ System.out.println("A类构造方法!"); }}class B extends A{ public B(String title){ super(title); System.out.println("B类构造方法"); }}public class TestDemo4 { public static void main(String args[]){ new B("Hello!!!!"); }}super() : 主要是由子类调用父类中的构造方法,那么这行语句一定要放在子类构造方法的第一行,这一点与this()是相似的。
super()与this()不能同时出现,有this()就不会有super()隐藏存在,不管子类如何,子类对象的构造调用前一定先执行父类构造,为父类的对象初始化后才轮到子类对象。(在子类对象实例化是既实例化了父类对象也实例化了子类对象。)
注:课时78到课时80
覆写
· 继承性的主要特征是子类可以根据父类已有的功能进行功能的扩展,但是在子类定义属性或方法时有可能子类定义的属性和方法与父类中的同名。以下,覆写就是为了解决此问题。
· 方法覆写:子类定义了与父类方法名称相同、参数的类型及个数相同、返回值相同的方法
· 覆写结果的分析要素:
① 观察实例化的是哪个类;
② 观察这个实例化的类中调用的方法是否已被覆写,如果没有被覆写则调用的是父类,否则调用的是子类。
· 什么时候需要覆写?——覆写的使用原则(这里是被动的,还有主动的):
如果发现父类中的方法功能不足(不适合于本子类),但又必须使用方法名称时就需要采用覆写这一概念。子类覆写的方法不能够拥有比父类更为严格的访问控制权限(public > default > private)也就是说public 权限最大,最宽松,private 权限最小,最严格。如果父类的方法使用的是public声明,那么子类覆写此方法只能用public;若父类 的方法使用的是default声明,则子类只能用default或public声明。!!!99%情况方法用的都是public!!!
父类方法如果使用了private声明,则对于子类来说该方法是不可见的,就算子类中定义了一个完全相同且符合覆写要求的方法,那么也不能发生覆写,此时子类所写的方法只 是相当于子类自己定义了一个新的方法而已
************默认情况下子类所能调用的一定是覆写过的方法。为了能明确的由子类调用父类中已被子类覆写的方法,可以使用”super.方法()“***********
·super.方法() 与 this.方法() 的区别:
this.方法():会首先查找本类中是否存在有要调用的方法,若存在则直接调用,若没有则发生编译错误;
super.方法() :明确表示调用的不是子类方法,调用的就是父类的方法
- 对象的三大特性(封装、继承、多态)之------继承性 + 覆写
- 黑马程序员_OC语言之面向对象的三大特性(封装、继承、多态)
- java面向对象的三大特性----封装、继承、多态
- 面向对象的三大特性:封装,继承,多态
- oc学习笔记(四)面向对象-类的三大特性:封装,继承,多态
- java 面向对象三大特性(封装,继承,多态)以及抽象、接口的介绍
- Java — 面向对象的三大特性(封装、继承、多态)
- java 面向对象三大特性(封装,继承,多态)以及抽象、接口的介绍
- java 面向对象三大特性(封装,继承,多态)以及抽象、接口的介绍
- 36 面向对象的三大特性之继承性
- 面向对象的三大特性之(二)继承
- ⑤--面向对象三大特性:封装、继承、多态
- 面向对象三大特性-封装、继承、多态
- 面向对象编程三大特性------封装、继承、多态
- 【面向对象】三大特性——封装、继承、多态
- 面向对象三大特性——封装、继承、多态
- 【java学习】面向对象三大特性:封装,继承,多态
- C# 面向对象三大特性:封装、继承、多态
- Linux系统的三种不同类型进程
- SpringMVC4+Spring4+Hibernate4框架整合
- 偏执却管用的10条Java编程技巧
- 第二十三条:不要在新代码中使用原生类型
- 2002年分区联赛普级组之四 过河卒
- 对象的三大特性(封装、继承、多态)之------继承性 + 覆写
- 关于编程中的无穷大的一些事
- pci_alloc_consistent 配合mmap
- BOM对象--类似页面左右两侧的广告
- 孤儿进程与僵尸进程[总结]
- js style属性
- 我眼中的Window创建/添加/删除/更新过程
- No row with the given identifier exists 解决方法
- Spring容器、Bean配置信息。Bean实现类及应用程序的关系