zoukankan      html  css  js  c++  java
  • java中super关键字的作用

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

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

    package test;
    
    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();
        }
    }
    
    未经授权,不得转载!
  • 相关阅读:
    IE兼容问题,各类css hack代码(亲测有效)
    javascript进阶系列专题:闭包(Closure)
    javascript进阶系列专题:作用域与作用域链
    github文件上传及github pages博客搭建教程
    javascript算法
    【CSS3】标签使用说明
    【html5】常见标签使用说明(持续更新)
    通过一行代码学习javascript
    Object.create()兼容实现方法
    oracle查询锁表解锁语句 (转)
  • 原文地址:https://www.cnblogs.com/bluetree2/p/10784962.html
Copyright © 2011-2022 走看看