欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java基础之面向对象详细讲解(4)——三大特性之继承

程序员文章站 2022-07-10 17:29:05
1.继承1.1、继承子类继承父类的属性和行为亚古兽就是战斗暴龙兽的父类,越往后辈分越低,但是更加具体两张图来帮助理解通过extends继承父元素允许继承的属性和行为子类是对父类的扩展1.2、代码助理解main.javapackage com;public class main { public static void main(String[] args) { son my = new son(); my.car(); my....

1.继承

1.1、继承

子类继承父类的属性和行为

Java基础之面向对象详细讲解(4)——三大特性之继承

亚古兽就是战斗暴龙兽的父类,越往后辈分越低,但是更加具体

Java基础之面向对象详细讲解(4)——三大特性之继承

两张图来帮助理解

通过extends继承父元素允许继承的属性和行为

子类是对父类的扩展

1.2、代码助理解

main.java

package com;

public class main {
    public static void main(String[] args) {
        son my = new son();
        my.car();
        my.grade=10;
    }
}

parent.java

package com;

public class parent {
    int money;
    int house;
    private String achievement;
    public void car(){
        System.out.println("一辆车");
    }
}

son.java

package com;

public class son extends parent {
    int grade;

}

2.1、super关键字

在继承后有super这个关键字

作用:区分父类和子类重复的变量名

​ super代表父类的

​ this代表子类的

2.2、代码助理解

equ_triangle.java

package com;

public class equ_triangle extends triangle {
    //我在父类中有name变量,但是因为我子类中也有name,
    // 在通过this.name指向时,会优先指向子类中的name
    //所以在此时,通过使用super和this进行区分
    //super.name指向的是父元素的name
    //this.name指向的是子元素的name
    String name = "等边三角形";

    /*
    * 在执行构造方法的时候会先执行父类的构造方法,然后再执行子类的构造方法
    * 在继承的形式中执行顺序是:
    *       父类构造--子类构造
    * */
    public equ_triangle(){
        /*在执行子类构造时相当于执行了
        super()
        在无参数时可以不用写,在有参数时必须写,且Java要求必须写在子类构造方法的第一行
        */
        System.out.println("子类构造方法");
    }
    public void test(){
        this.name="等边三角形";
        System.out.println("将三角形修改为:");
        /*子类元素*/
        System.out.println(this.name);
        System.out.println("父元素是:");
        /*夫雷元素*/
        System.out.println(super.name);
    }
    public void test2(){
        System.out.println("将三角形修改为:");
        System.out.println(this.name);
        System.out.println("父元素是:");
        System.out.println(super.name);
    }
    public static void main(String[] args) {
        equ_triangle triangle = new equ_triangle();
        System.out.println("*********test方法开始执行*********");
        triangle.test();
        System.out.println("*********test2方法开始执行*********");
        triangle.test2();
    }
}

triangle.java

package com;

public class triangle {
    String name="三角形";
    public triangle(){
        System.out.println("父类构造方法");
    }
}

2.重写

2.1、重写的使用

为什么?

当子类与父类出现相同的方法名是,就需要重写来把父类的方法覆盖掉

2.2、代码助理解

main.java

package com;

public class main extends first{
    //如果不写下面方法,听父元素的,那老婆就是翠花
    //如果想要自己决定,那么重新写(重写)这个方法覆盖掉父类相同的这个方法
    public void girlfriend(){
        System.out.println("老婆是林志玲");
    }
    public static void main(String[] args) {
        main me = new main();
        me.girlfriend();
    }
}

first.java

package com;

public class first {
    public void girlfriend(){
        System.out.println("老婆是翠花");
    }
}

本文地址:https://blog.csdn.net/getture/article/details/110821505