精华内容
下载资源
问答
  • 关于super关键字

    2019-12-10 16:21:24
    说到super关键字我们就不得不说到this关键字,我们都知道this总是指向当前函数所在的的对象,而super关键字则是指向当前对象的原型。 在java中super关键字通常有两种用法:一是用在子类的构造方法里面;二是用在...

            说到super关键字我们就不得不说到this关键字,我们都知道this总是指向当前函数所在的的对象,而super关键字则是指向当前对象的原型。

            在java中super关键字通常有两种用法:一是用在子类的构造方法里面;二是用在子类里调用隐藏或重写的属性或行为;

            1.super关键字可以在子类的构造方法中显式地调用父类的构造方法,super()必须为子类构造函数的第一行;

            2.super可以用来访问父类的成员变量或者方法,当子类成员变量或方法与父类有相同的名字时也会覆盖父类的成员变量或方法,这个时候想要访问父类的成员变量或方法只能通过super关键字来访问,子类方法中的super.方法名()不需要位于第一行。

    
    class FatherClass {
    
        public int value;
        public void f() {
            value=100;
            System.out.println("父类的value属性值="+value);
        }
    
    //父类构造方法
        public FatherClass(){
            System.out.println("FatherClass constructor");
        }
    }
     
    class ChildClass extends FatherClass {
        /**
         * 子类除了继承父类所具有的value属性外,自己又另外声明了一个value属性,
         * 也就是说,此时的子类拥有两个value属性。
         */
        public ChildClass(){
            super();
            System.out.println("ChildClass constructor");
        }
        public int value;
        /**
         * 在子类ChildClass里面重写了从父类继承下来的f()方法里面的实现,即重写了f()方法的方法体。
         */
        public void f() {
            //使用super作为父类对象的引用对象来调用父类对象里面的f()方法
            //这个value是子类自己定义的那个value,不是从父类继承下来的那个value
            value=200;
            super.f();   //父类的value属性值=100
            System.out.println("子类的value属性值="+value);  //子类的value属性值=200
            //打印出来的是子类自定义的那个value的值,这个值是200
            System.out.println(value);  //200
            /**
             * 打印出来的是父类里面的value值,由于子类在重写从父类继承下来的f()方法时,
             * 第一句话“super.f();”是让父类对象的引用对象调用父类对象的f()方法,
             * 即相当于是这个父类对象自己调用f()方法去改变自己的value属性的值,由0变了100。
             * 所以这里打印出来的value值是100。
             */
            System.out.println(super.value);  //100
        }
    }
    public class SuperKeyTest {
        public static void main(String[] args) {
            ChildClass cc = new ChildClass();
            cc.f();
        }
    }

            

     

    展开全文
  • 关于 super 关键字

    2017-04-21 21:31:41
    每当创建子类的实例时,父类的实例被隐式创建,由super关键字引用变量引用。 java super关键字的用法如下: super可以用来引用直接父类的实例变量。 super可以用来调用直接父类方法。 super()可以用于调用直接...

    super

    java 中的 super 关键字是一个引用变量,用于引用直接父类对象。
    每当创建子类的实例时,父类的实例被隐式创建,由super关键字引用变量引用。

    java super关键字的用法如下:

    • super可以用来引用直接父类的实例变量。
    • super可以用来调用直接父类方法。
    • super()可以用于调用直接父类构造函数。

    1、引用父类实例变量

    class Animal {
        String color = "white";
    }
    
    class Dog extends Animal {
        String color = "black";
        void printColor() {
            System.out.println(color);
            System.out.println(super.color);
        }
    }
    
    class TestSuper {
        public static void main(String args[]) {
            Dog d = new Dog();
            d.printColor();
        }
    }
    //输出 black white

    2、调用父类构造器方法

    class Person {
        int id;
        String name;
        Person(int id, String name) {
            this.id = id;
            this.name = name;
        }
    }
    
    class Emp extends Person {
        float salary;
        Emp(int id, String name, float salary) {
            super(id, name); 
            //reusing parent constructor 重用父类构造器
            this.salary = salary;
        }
        void display() {
            System.out.println(id + " " + name + " " + salary);
        }
    }
    
    class TestSuper {
        public static void main(String[] args) {
            Emp e1 = new Emp(1, "haixing", 5600y);
            e1.display();
        }
    }
    //输出>> 1 haixing 5600y

    这里 Emp 类继承了 Person 类,所以 Person 的所有属性都将默认继承到Emp。要初始化所有的属性,可使用子类的父类构造函数。这样,我们重用了父类的构造函数。


    展开全文
  • 标题关于super关键字与子类的实例化步骤 所有的类在实例化的过程中,其构造方法中一定调用了super () 调用可能是显示也可能是隐式调用。 类的构造方法前要么是this (),要么是super()。this()调用该类的其他构造...

    标题关于super关键字与子类的实例化步骤

    1. 所有的类在实例化的过程中,其构造方法中一定调用了super ()
    2. 调用可能是显示也可能是隐式调用。
    3. 类的构造方法前要么是this (),要么是super()。this()调用该类的其他构造方法。其他的构造方法中必定有一个有super ()。
    4. 父类如果写了有参数的构造方法,没有写无参数的。子类不显式写super (参数)会直接报错。
    5. 子类实例化会先载入父类的属性和方法。
    展开全文
  • Java中关于super关键字的作用

    万次阅读 2019-01-07 20:57:52
    在子类继承父类中,一般有一行super的语句,需要记住三种使用方法: 1、super.变量/对象名; 使用这种方法可以直接访问父类中的变量或对象,进行修改赋值等操作 2、super.方法名(); 直接访问并调用父类中的方法 3、...

    在子类继承父类中,一般有一行super的语句,需要记住三种使用方法:

    1、super.变量/对象名;

    使用这种方法可以直接访问父类中的变量或对象,进行修改赋值等操作

    2、super.方法名();

    直接访问并调用父类中的方法

    3、super();

    调用父类的初始化方法,其实就是调用父类中的public xxx()方法,通常第三种指代的是super()的省略写法,系统会默认添加此句。
    特殊情况:如果父类没有无参的构造函数,所以子类需要在自己的构造函数中显示的调用父类的构造函数,即不能使用系统默认的“super()”,而需要显性写出super(xxx)

    展开全文
  • 关于super关键字与继承

    千次阅读 2013-10-30 21:26:55
    super它只是一个限定词,当用super引用时,它也是引用当前对象本身,只是super只是限定了访问当前对象从父类那里继承得到成员变量或方法。 import java.util.Date; public class Test extends Date{ public static...
  • 以上定义的Chinese继承Person,我的理解是Chinese继承了Person的数据域和方法,调用set方法设置的不是Chinese的String和age么,那么super.print()打印的不是Person的String和age吗,也就是null和0,为什么运行程序...
  • 最近在看一份源码 里面有不少构造函数的super是指向Object类的 请问这种情况下用super的意义是?
  • Java中super关键字super关键字与this关键字的区别

    千次阅读 多人点赞 2018-10-21 16:31:33
    文章目录1 super关键字1.1 super用于方法1.1.1 用于构造方法1.1.2 用于普通方法1.1.2 用于属性2 super与this关键字的区别2.1 概念上2.2 查找范围2.3 特殊之处 1 super关键字 1.1 super用于方法 1.1.1 用于构造...
  • super关键字

    2017-04-11 22:07:00
    关于super关键字 问题描述: 在我的印象中跟super相关的关键字需要放在方法或者使用时的第一行,不知道是哪里来的印象,但是前些天从网上看来一个代码,在一个重写方法中最后调用了super关键字,这个问题困扰我...
  • super关键字: 使用super可以调用父类的成分:父类的成员变量、父类的方法、父类的构造方法。 注意:使用super关键字和this关键字,均不能用在静态方法中,只能用在普通方法(实例方法)中。 访问属性: 示例:...
  • 跟汤老师学Java笔记:super关键字 完成:第一遍 1.super关键字和this关键字的区别? super关键字: 表示父类对象的引用,只能在子类中使用 可以使用 super() 调用父类的构造方法,必须位于第一行 可以使用 super. ...
  • super关键字super关键字代表了父类空间的引用。 super关键字的 作用: 1. 子父类存在着同名的成员时,在子类中默认是访问子类的成员,可以通过super关键字指定访问父类的成员。 2. 创建子类对象时,默认会先...
  • Super关键字

    2021-03-05 16:54:28
    Super关键字的使用 1. Super关键字 1.1 super可以理解为父类的,super可以用来调用属性、方法、构造器 2. Super关键字的使用 2.1 我们可以在子类的方法或构造器中,通过使用“super.属性”或“super.方法”的方式,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 177,356
精华内容 70,942
关键字:

关于super关键字