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();
    }
}

原文地址:https://www.cnblogs.com/bluetree2/p/10784962.html

时间: 2024-07-29 23:48:31

java中super关键字的作用的相关文章

Java中super关键字的作用与用法

Java中的super是什么?java中的super关键字是一个引用变量,用于引用父类对象.关键字“super”以继承的概念出现在类中.主要用于以下情况: 1.使用super与变量:当派生类和基类具有相同的数据成员时,会发生此情况.在这种情况下,JVM可能会模糊不清.我们可以使用以下代码片段更清楚地理解它: /* Base class vehicle */ class Vehicle { int maxSpeed = 120; } /* sub class Car extending vehic

Java中Native关键字的作用

阅读目录 一.认识 native 即 JNI,Java Native Interface 二.用 Java 调用 C 的"Hello,JNI" 三.JNI 调用 C 流程图 四.其他介绍 初次遇见 native是在 java.lang.Object 源码中的一个hashCode方法: 1 public native int hashCode(); 为什么有个native呢?这是我所要学习的地方.所以下面想要总结下native. 回到顶部 一.认识 native 即 JNI,Java N

Java中static关键字的作用和用法详细介绍

static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static修饰的成员变量和成员方法独立于该类的任何对象.也就是说,它不依赖类特定的实例,被类的所有实例共享. 只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们.因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象. 用public修饰的static成员变量和成员方法本质是全局变量和全局方法,当声明它类

java中static关键字的作用

在java语言中有四种使用情况:成员变量.成员方法.代码块和内部类 (1)static成员变量 java中可以通过statin关键字修饰变量达到全局变量的效果.static修饰的变量(静态变量)属于类,在类第一次通过类加载器到jvm时被分配内存空间. (2)static成员方法 static修饰的方法属于类方法,不需要创建对象就可以调用.static方法中不能使用this和super等关键字,不能调用非static方法,只能访问所属类的静态成员变量和静态方法. (3)static 代码块 JVM

java中volatitle关键字的作用

用在多线程,同步变量. 线程为了提高效率,将某成员变量(如A)拷贝了一份(如B),线程中对A的访问其实访问的是B.只在某些动作时才进行A和B的同步.因此存在A和B不一致 的情况.volatile就是用来避免这种情况的.volatile告诉jvm, 它所修饰的变量不保留拷贝,直接访问主内存中的(也就是上面说的A) =========================分割线1================================= 版权声明 :转载时请以超链接形式标明文章原始出处和作者信息及

java中this关键字的作用

一.this关键字主要有三个应用: (1)this调用本类中的属性,也就是类中的成员变量: (2)this调用本类中的其他方法: (3)this调用本类中的其他构造方法,调用时要放在构造方法的首行. Public Class Student { String name; //定义一个成员变量name private void SetName(String name) { //定义一个参数(局部变量)name this.name=name; //将局部变量的值传递给成员变量 } } 应用一:引用成

JAVA中 this关键字的作用

this关键字主要有三个应用:1.this调用本类中的属性,也就是类中的成员变量:2.this调用本类中的其他方法:3.this调用本类中的其他构造方法,调用时要放在构造方法的首行.Public Class Student {   String name; //定义一个成员变量name  private void SetName(String name) { //定义一个参数(局部变量)name  this.name=name; //将局部变量的值传递给成员变量  }}应用一:引用成员变量 如上

Java中volatile关键字的作用

在Java内存模型中,有main memory(主内存)还每个线程各自的线程内存memory(例如:寄存器).为了性能一个线程会在自己memory中保持要访问变量的副本.这样就会出现同一个变量在某一个时刻一个线程内存中的值和其他线程内存或者主内存中的值不一致. 一个变量声明为volatile,就意味着这个变量随时会被其他线程修改,因此不能将他cahe在线程memory中,即:不会再memory中保留他的副本,下面看个例子: public class TestVolatile extends Th

深入解析Java中volatile关键字的作用

Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 同步块 和 volatile 关键字机制在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉. Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 同步块 和 volatile 关键字机制. synchronized 同步块大家都比较熟悉,通过 synchronized 关键字来实现,所有加上synchronized 和