• Java面对对象的特征之二:继承性 :why?


    一、继承性的好处:

    1. 减少了代码的冗余,提高了代码
    2. 便于功能的扩展
    3. 为之后的多态性的使用,提高了前提

    二、继承性的格式:class A extends B{}

     A:子类、派生类、subclass

    B:父类、超类、基类、superclass

    1. 提现:一旦子类A继承父类B以后,子类A中就获取父类B中声明的所有的属性和方法 特别的,父类中声明为private的属性或方法,子类继承父类以后,仍然认为获取了父类中私有的结构,只是因为封装性的影响,使得子类不能直接调用父类而已。
    2. 子类继承父类以后,还可以声明自己持有的属性或方法,实现功能的拓展子类和父类的关系,不同于子集和集合的关系extends::延展、扩展

    三、Java中关于继承性的规定

    1. 一个类可以被多个子类继承
    2. Java中类的单继承性:一个类只能有一个父类。
    3. 子父类是相对的概念。
    4. 子类直接继承的父类,称为:直接父类。间接继承的父类称为:间接父类
    5. 子类继承父类以后,就获取了直接父类以及所有间接父类中声明的属性和方法

    额外:

    1. 如果我们没有显式的声明一个类的父类的话,则此类继承于java.lang.oObject类
    2. 所有的Java类(除了java.lang.Object类之外)都直接或间接的继承于java.lang.Object类
    3. 意味着,所有的Java类具有java.lang.Object类声明的功能

     实例:

    第一部分:

    1. public class Creature {
    2. public void breath(){
    3. System.out.println("呼吸");
    4. }
    5. }

    第二部分:Person类直接继承Creature类

    1. public class Person extends Creature{
    2. String name;
    3. private int age;
    4. public Person(){};
    5. public Person(String name,int age){
    6. this.name=name;
    7. this.age=age;
    8. }
    9. public void eat(){
    10. System.out.println("吃饭");
    11. }
    12. public void sleep(){
    13. System.out.println("睡觉");
    14. }
    15. public int getAge() {
    16. return age;
    17. }
    18. public void setAge(int age) {
    19. this.age = age;
    20. }
    21. }

    第三部分:Student类直接继承Person类,相当于间接继承了Creature类

    1. public class Student extends Person {
    2. String major;
    3. public Student(){}
    4. public Student(String name,int age,String major){
    5. this.name=name;
    6. setAge(age);
    7. this.major=major;
    8. }
    9. public void study(){
    10. System.out.println("学习");
    11. }
    12. public void show(){
    13. System.out.println("name:"+name+",age:"+getAge());
    14. }
    15. }

    最终结果:

    1. public class ExtendsTest {
    2. public static void main(String[] args) {
    3. Person p1=new Person();
    4. p1.eat();
    5. Student s1=new Student();
    6. s1.eat();
    7. s1.sleep();
    8. s1.name="Tom";
    9. s1.setAge(10);
    10. System.out.println(s1.getAge());
    11. }
    12. }

    结果图:

  • 相关阅读:
    java计算机毕业设计社区二手交易平台前台源码+系统+数据库+lw文档+mybatis+运行部署
    Vue3、vite项目页面自适应配置(postcss-plugin-px2rem、amfe-flexible)
    el-select应用虚拟列表,避免过多数据导致浏览器卡死
    云原生网关哪家强:Sealos 网关血泪史
    用OpenCV(Python)获取图像的SIFT特征
    uniapp开发小程序接入阿里云TTS语音合成(RESTful API)
    如何用神经网络预测数据,神经网络预测的软件有
    Vue——获取对象类型
    Iphone自动化指令每隔固定天数打开闹钟关闭闹钟(二)
    Remote access minikube cluster远程访问minikube k8s集群
  • 原文地址:https://blog.csdn.net/weixin_49757916/article/details/126278167