对类的继承的理解
来源:互联网 发布:阿里云企业邮箱客户端 编辑:程序博客网 时间:2024/05/18 02:33
要认识和学习类的继承,我们首先要了解类的类型有哪些。类主要分为三类:普通类、接口类、抽象类。其中,普通类是只能含有普通方法和构造方法的类;抽象类是可以有普通方法、构造方法和抽象方法的类;而接口中的方法只能是抽象的。由于有抽象方法的存在,所以抽象类和接口类是不能创建实例的。
面向对象相对于面向过程的一个优势就是代码更加简洁,程序员把具有相同特征的事物归结为一个类,当另一个类具有相同特征和行为,我们无需再重新定义,只需将这个类继承前一个类就可以了,这样就可以很好地避免了代码的冗余。如:我们可以将有两只眼睛、一个嘴巴、有学习能力等特征或行为的定义为动物类;当我们定义狗、猫、猴子时,他们也都具有动物的基本特征,这样我就不需要再重复定义这些特征和行为了。
由于类的类型不同,类与类之间的继承也是有区别的。因为抽象类和接口类中有抽象抽象方法,所以在普通类在继承抽象类和接口类时,必须子类重写父类中的抽象方法;在抽象类继承接口类,如果抽象方法没有改变可以不用重写,但如果将抽象方法转型为普通方法就需要就方法重写。
在重写方法是需要注意的是:子类的方法名、参数、返回值必须和父类继承过来的方法一致,而方法体与父类的方法体不同。
完成类的继承后,在给类创建对象时,有可能出现对象的自动转型。如类Son继承了类Parents,若 Parents peo = new Son(); 这样创建对象时,虽然调用的方法是类Son中的,但是这个对象的类型已经转型为类Parents的了。由于对象的类型发生了转化,所以可能导致同属于父类的两个对象调用同一个方法,但方法体不一样,执行过程和结果就不一样,这就称为多态。
面向对象相对于面向过程的一个优势就是代码更加简洁,程序员把具有相同特征的事物归结为一个类,当另一个类具有相同特征和行为,我们无需再重新定义,只需将这个类继承前一个类就可以了,这样就可以很好地避免了代码的冗余。如:我们可以将有两只眼睛、一个嘴巴、有学习能力等特征或行为的定义为动物类;当我们定义狗、猫、猴子时,他们也都具有动物的基本特征,这样我就不需要再重复定义这些特征和行为了。
由于类的类型不同,类与类之间的继承也是有区别的。因为抽象类和接口类中有抽象抽象方法,所以在普通类在继承抽象类和接口类时,必须子类重写父类中的抽象方法;在抽象类继承接口类,如果抽象方法没有改变可以不用重写,但如果将抽象方法转型为普通方法就需要就方法重写。
在重写方法是需要注意的是:子类的方法名、参数、返回值必须和父类继承过来的方法一致,而方法体与父类的方法体不同。
完成类的继承后,在给类创建对象时,有可能出现对象的自动转型。如类Son继承了类Parents,若 Parents peo = new Son(); 这样创建对象时,虽然调用的方法是类Son中的,但是这个对象的类型已经转型为类Parents的了。由于对象的类型发生了转化,所以可能导致同属于父类的两个对象调用同一个方法,但方法体不一样,执行过程和结果就不一样,这就称为多态。
0 0
- 对类的继承的理解
- 对java继承的理解
- 对继承的浅理解
- 对继承的再次理解
- 对C#继承的理解
- 对C++中类的继承过程的理解
- 我对JS的继承的理解
- 对Java对象的理解以及对“抽象类”继承的理解
- 对java继承,多态,抽象类,接口的理解
- 谈谈我对封装,继承,抽象类,接口的理解
- 对封装 继承 抽象类和接口的理解
- 对封装,继承,抽象类和接口的理解
- 对封装,继承,抽象类和接口的理解
- 我对C++中继承的理解
- 对JavaScript面对对象#继承的理解
- 实验田之对继承的理解
- 对C++继承的一点理解
- 我对java继承的理解
- Codeforces Round #311 (Div. 2) A B C D
- GNU-LIBC源码学习之strlen
- Leetcode_190_Reverse Bits
- IOS开发-06.提示框
- leetcode 69:Sqrt(x)
- 对类的继承的理解
- Android使用Volley保持与服务器的会话
- java jar 打包命令
- 数组配对(算法)
- PAT 数据结构 08-排序4. The World's Richest (25)
- 大话设计模式(一 面试受挫——代码无错就是好?)
- n个骰子的点数
- 红黑树
- CS224D Lecture 4 札记