深入理解面向对象编程中的继承特性
最编程
2024-07-27 10:32:41
...
面向对象-继承性的理解
1.继承性的好处
- 减少代码的冗余,提高代码的复用性
- 便于功能的扩展(直接在父类中添加,子类中就能使用)
- 为多态性的使用,提供了前提
2.继承性的格式
class A extends B{}
体现:一旦子类A继承父类B中声明的所有的属性 方法
特别的,父类中声明为private的属性的或方法,子类继承父类之后,仍然认为获取了父类中的私有结构。只是因为封装性的影响,使得子类不能直接调用父类的结构而已。
子类在继承父类之后,还能定义自己特有的属性和方法,实现功能的拓展
3.继承中的规定
- 一个类可以被多个子类继承
- java中类的单继承性,一个类只能有一个父类
- 子父类是相对的概念(没有爷爷类的说法)
- 子类直接继承的父类称谓直接父类,间接继承的父类称为间接父类(父类的父类)
- 子类继承父类用户,就获得了父类以及所有间接父类中声明的属性和方法
如果我们没有显式的声明一个类的父类的话,则此类继承于
java.lang.Object
类所有的java类(除
java.lang.Object
类之外)都直接或间接的继承于java.lang.Object
类意味着,所有的java类具有
java.lang.Object
类中声明的功能
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HRyw5NG6-1649125777129)(C:\Users\limingwei6\AppData\Roaming\Typora\typora-user-images\image-20220403170645236.png)]
5.code 举例
-
父类、超类、基类、superclass
public class Person { private String name; private int age; public Person() { } public Person(String name, int age) { this.name = name; this.age = age; } public void eat() { System.out.println("人会吃饭"); } public void sleep() { System.out.println("人会睡觉"); } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
-
子类、派生类、subclass
public class Student extends Person { String major; public void study() { System.out.println("学生会学习"); } }
-
使用
public class ExtendsTest { public static void main(String[] args) { Student s1 = new Student(); // 继承的person的属性 s1.setName("aka"); s1.setAge(10); // 继承的person的方法 s1.eat(); s1.sleep(); // s1.study(); } }
上一篇: JavaScript里的继承小实例演示
下一篇: 面向对象里的继续学习:继承特性