首页 > 编程语言 > 详细

JAVA中使用super调用属性和方法

时间:2021-03-11 22:28:06      阅读:34      评论:0      收藏:0      [点我收藏+]

super关键字的使用


   1.super可以理解为父类的

   2.super可以用来调用属性,方法,构造器

   3.super的使用

     3.1在子类的方法或构造器中,通过使用“super.属性”或者“super.方法”的方式 ,显示的调用父类中声明的属性或者方法 但是,通常情况下,我们习惯省略 “super.”

     3.2特殊情况,当子类和父类中定义了同名的属性时,想要调用父类中声明的属性,就需要通过“super.属性”的方式来表明调用的是父类中声明的属性

     3.3特殊情况,当子类重写了父类中的方法以后,想在子类的方法中调用父类被重写的方法时,则必须显示的使用“super.方法” 来表明调用的是父类中被重写的方法

新建一个父类Person

public class Person {
    String name="张三";
    int age=21;
    int id=1001001001;//证号

    public Person(){
    }

    public Person(String name){
        this.name = name;
    }

    public Person(String name,int age){
        this(name);
        this.age = age;
    }

    public void eat(){
        System.out.println("人吃饭");
    }
    public void walk(int distance){
        System.out.println("人走路,走的距离是"+distance+"公里");
    }
}

再新建一个子类Student,继承上面的父类Person

package com.guigu.exer;

import com.guigu.exer.Person;

public class Student extends Person {

    String major;
    int id=10086;//学号
    public Student(){

    }
    public Student(String major){
        this.major = major;
    }

    //该方法对父类方法进行了重写
    @Override
    public void eat(){
        System.out.println("学生吃饭");
    }

    public void show(){
        //此时的name、age前面可以省略this
        System.out.println("name=" + name + "," + "age=" + age);
        //这里的this,super都可以调用,第一是因为子类和父类没有属性冲突的情况,都在堆空间去找且仅有一个name、age
        System.out.println("name=" + this.name + ","+ "age=" + super.age);
        //因为子类和父类都有一个同名的属性,此时在堆空间是有两个id的, 默认调用的是子类的属性,这里省略了一个this
        System.out.println("子类中的id=" + id);
        //如果想要调用父类的属性,需要在前面加上一个super
        System.out.println("父类中的id = "+ super.id);
    }

    public void study(){

        System.out.println("学生,好好学习,天天向上");
        //这里的调用省略了前面的“this.”
        eat();
        super.eat();
        //因为walk没有被重写,那么在子类中调用时,可以省略this,也可以使用"this.",还可以使用"super."
        //使用“this."和"super."的区别在于:“this."会先在本类去找,没有找到再去父类找该方法,使用"super."直接去父类去找该方法
        walk(2);
        this.walk(3);
        super.walk(5);
    }

}

新建一个测试类,来验证一下,看看打印结果

public class SuperTest {
    /**
     * @param args
     */

    public static void main(String[] args) {
        Student student =new Student();
        student.show();
        student.study();

    }
}

 

    

JAVA中使用super调用属性和方法

原文:https://www.cnblogs.com/king2/p/14520909.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!