精华内容
下载资源
问答
  • 关键字super的作用 super代表父类对应的对象,所以用super访问在子类中无法直接使用的父类成员和方法 Java内存区域 JAVA的JVM的内存可分为3个区:堆(heap)、栈(stack)和方法区(method) 栈区: 每个线程包含...

    关键字super的作用

    super代表父类对应的对象,所以用super访问在子类中无法直接使用的父类成员和方法

     Java内存区域

    JAVA的JVM的内存可分为3个区:堆(heap)、栈(stack)和方法区(method)

    • 栈区:
    1. 每个线程包含一个栈区,栈中只保存方法中(不包括对象的成员变量)的基础数据类型和自定义对象的引用(不是对象),对象都存放在堆区
    2. 每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。
    3. 栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令)。
    • 堆区:
    1. 存储的全部是对象实例,每个对象都包含一个与之对应的class的信息(class信息存放在方法区)。
    2. jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身,几乎所有的对象实例和数组都在堆中分配。
    • 方法区:
    1. 又叫静态区,跟堆一样,被所有的线程共享。它用于存储已经被虚拟机加载的类信息、常量、静态变量,即时编译器编译后的代码等数据。

    程序计数器一个比较小的内存区域,用于指示当前线程所执行的字节码执行到了第几行,是线程隔离的
    
    原则上讲,所有的对象都是在堆区上分配内存,是线程之间共享的
    Java方法执行内存模型,用于存储局部变量,操作数栈,动态链接,方法出口等信息,是线程隔离的

    有一个源代码,只包含import java.util.* ; 这一个import语句,

    能访问java/util目录下的所有类不能访问java/util子目录下的所有类

    展开全文
  • 关键字super的作用意义

    千次阅读 2013-07-07 22:53:00
    由于子类可以覆盖父类实例方法、隐藏父类类方法、隐藏父类字段等,但是我们有时候需要引用到父类一些方法,这时候需要借助关键字super.   1.隐藏超类中字段:  如果一个子类中与其父类有同名字段,即使...

        由于子类可以覆盖父类的实例方法、隐藏父类的类方法、隐藏父类的字段等,但是我们有时候需要引用到父类的一些方法,这时候需要借助关键字super.

     

    1.使用super关键字访问父类中的成员.

        1-1.调用父类中被覆盖的方法

        示例:

    public class Superclass {
        public void printMethod() {
            System.out.println("在Superclass中的输出。");
        }
    }
    public class Subclass extends Superclass {
    	//重写超类Superclass中的printMethod方法
        	public void printMethod() { 
            	super.printMethod();							//使用super关键字调用超类中的方法
            	System.out.println("在Subclass中的输出。");
        	}
    }
    
    public class ExtendsDemo7{
        	public static void main(String[] args) {    	
        		Subclass s = new Subclass();
        		s.printMethod();	
        	}
    }

    输出结果:

    在Superclass中的输出.
    在Subclass中的输出.

     

        1-2.访问父类中被隐藏的字段

        示例: 

    // 父类A
    class A{
    	public String name = "张小明";
    }
    
    // A的子类B
    class B extends A{
    	public String name = "赵红丽";
    	public void self( ){
    		System.out.println("我的名字是:" + name);
    		System.out.println("我原来的名字是:" + super.name);	//使用super访问超类中被隐藏的字段
    	}
    }
    // 主程序ExtendsDemo8
    public class ExtendsDemo8{
      public static void main(String[ ] args){
    	B b = new B( );
    	b.self( );
      }
    }

    输出结果:

    我的名字是: 赵红丽
    我原来的名字是: 张小明


    2.使用super关键字调用父类的构造器:

        子类是不继承父类的构造器.因此,如果要初始化父类中的字段,可以在子类的构造器中,通过关键字super调用父类的构造器.对父类的构造器的调用必须放在子类的构造器的第一行.

        示例:

    // 父类A
    class A{
    	A(){
    		System.out.println("这里是超类A的构造器。");
    	}
    }
    
    // A的子类B
    class B extends A{
    	B(){
    		super();
    		System.out.println("这里是子类B的构造器。");
    	}
    }
    
    // 主程序ExtendsDemo9.java
    public class ExtendsDemo9{
        public static void main(String[] args) {
    		B b = new B();
        }
    }

    输出结果:

    这里是超类A的构造器.
    这里是子类B的构造器.


    3.构造器连

        如果一个子类的构造器显式或隐式地调用其父类的一个构造器,而其父类会再显式或隐式地调用父类的父类的构造器.形成一个完整的构造器链.

        示例:

    class Book {
        private String ISBN;
        Book(String isbn){
    			this.ISBN = isbn;
        }
        public String getISBN(){
    			return this.ISBN;
        }
        public boolean equals(Object obj) {
            if (obj instanceof Book)
                return ISBN.equals(((Book)obj).getISBN()); 
            else
                return false;
        }
    }
    
    public class ExtendsDemo11{
        public static void main(String[] args) {
    		Book firstBook  = new Book("0201914670"); 
    		Book secondBook = new Book("0201914670");
    		if (firstBook.equals(secondBook)) {
        			System.out.println("两个对象相等.");
    		} else {
        			System.out.println("两个对象不相等.");
    		}
        }
    }
    
    
    
    
    
    

    输出结果:

    这里是超类A的构造器.
    这里是超类B的构造器.
    这里是子类C的构造器.


     

    展开全文
  • package org.westos_01_继承; /*  * 问题:  * 不仅要在控制台输出子类中局部变量值,还要输出子类成员位置变量值,怎么办?... * super:代表是父类存储空间标识(代表是父类
    package org.westos_01_继承;
    /*
     * 问题:
     * 不仅要在控制台输出子类中的局部变量的值,还要输出子类的成员位置的变量的值,怎么办?
     *
     * 现在要访问子类的成员变量num =20 ;
     * 谁能代表Zi2类,this关键字:代表的是当前类对象
     * 问题:要输出父类中的成员变量的值:
     * super:代表的是父类的存储的空间标识(代表的是父类的对象或者是父类的引用)
     * 应用场景:
     * 访问成员变量:
     * this.成员变量;访问的是本类的成员变量
     * super.成员变量:访问的父类的成员变量
     * 访问成员方法:
     * this.成员方法(); 访问的是本类的成员方法
     * super.成员方法();访问拿到父类的成员方法
     * 访问构造方法:
     * this():访问的是本类中的空参构造;this("..."):访问拿到是本类中的带参构造
     * super():访问拿到是父类中无参构造
     * super(".."):访问的是父类中的带参构造
     * */
    class Fu2{

    public int num = 10;
    }


    class Zi2 extends Fu2{
    public int num = 20 ;

    public void show(){
    int num = 30 ;
    System.out.println(num);//30
    System.out.println(this.num);//20
    System.out.println(super.num);//10
    }
    }


    //测试类
    public class ExtendsDemo5 {
    public static void main(String[] args) {
    //创建子类对象
    Zi2 z = new Zi2() ;

    z.show() ;
    }

    }

    package org.westos_01_继承;
    /*
     * 继承中构造访问的访问特点:
     * 1)子类中的构造方法默认访问的是父类的无参构造方法
     * 2)子类的构造方法默认的第一句话:super();
     * 
     * 为什么子类中的构造方法默认访问父类中的无参构造方法
     * 子类继承父类的时候,可能会使用父类的数据,所以在继承的时候,想让父类进行初始化,父类初始化完毕之后,子类才进行自己的初始化!
     * 子类的无参和有参第一句话有一个默认语句:super() ; 
     *
     * */
    class Father3{
    public Father3(){
    System.out.println("这是父类的无参构造方法...");
    }

    public Father3(String name){
    System.out.println("这是父类的带参构造方法...");
    }
    }
    //子类
    class Son3 extends Father3{
    public Son3(){
    ///super() ;
    System.out.println("这是子类的无参构造方法...");
    }



    public Son3(String name){
    //super() ;
    System.out.println("这是子类的有参构造方法...");
    }





    //测试类
    public class ExtendsDemo6 {
    public static void main(String[] args) {
    //创建对象
    Son3 s = new Son3() ;
    System.out.println("-------------------");
    Son3 s2 = new Son3("高圆圆") ;


    }
    }

    展开全文
  • super关键字的作用

    2019-09-11 21:01:47
    但是必须是在子类构造方法中使用super关键字来调用. 语法格式:super([参数列表]); 如果父类构造方法中包括参数,则参数列表为必选项,用于指定父类构造方法入口参数. 2.操作被隐藏成员变量和...

    1.调用父类的构造方法

     

    子类可以调用由父类声明的构造方法.但是必须是在子类的构造方法中使用super关键字来调用.

     

    语法格式:super([参数列表]);

     

    如果父类的构造方法中包括参数,则参数列表为必选项,用于指定父类构造方法的入口参数.

     

    2.操作被隐藏的成员变量和被重写的成员方法

     

    如果想在子类中操作父类中被隐藏的成员变量和被重写的成员方法,也可以使用super关键字.

    转载于:https://my.oschina.net/u/3820364/blog/1818437

    展开全文
  • super关键字的作用 this和super的区别 使用super可以从子类中调用父类中的构造方法、普通方法、属性。语句必须放在子类的构造方法的首行。 下面以使用super调用父类中的指定构造方法为例 代码如下 package ...
  • 在静态方法当中不允许出现 this 关键字 super: 代表对当前对象直接父类对象引用 可以调用父类非 private 成员变量和方法 super(); 可以调用父类构造方法,只限构造方法中使用,且必须是第一条...
  • 1.super关键字可以在子类构造方法中显示地调用父类构造方法,super()必须为子类构造函数中第一行。2.super可以用来访问父类成员方法或变量,当子类成员变量或方法与父类有相同名字时也会覆盖父类成员...
  • java 关键字super和this

    2019-09-28 12:59:45
    super关键字  作用:调用父类构造器  只能出现在子类构造其中,并且必须是第一行  super()中参数,决定了调用父类那个构造器  注:如果子类构造器中没有出现super,则默认加上super(),调用父类...
  • java--关键字super

    2020-05-07 16:41:49
    super关键字的作用 Java类中调用super来调用父类中的指定操作: 1.super可用于访问父类中定义的属性 2.super可用于访问父类中定义的成员方法 3.super可用于在子类构造方法中调用父类的构造器 super和this的用法相像...
  • Super 关键字作用

    千次阅读 2017-05-03 13:25:40
    在类方法中 super关键字可以调用当前类从父类继承过来方法(类方法也能被子类继承,父类中类方法可以使用父类名来调用,也可以使用子类名调用。再子类类方法中,也可以用super来调用复用类方法)  
  • this 和 super 关键字的作用   this 是对象内部指代自身的引用,同时也是解决成员变量和局部变量同 名问题;this 可以调用成员变量,不能调用局部变量;this 也可以调用成员 方法,但是在普通方法中可以省略 this,在...
  • 通过用static来定义方法或成员,为我们编程提供了某种便利,从某种程度上可以说它类似于C语言中全局函数和全局变量。...super这两个关键字的意义和用法。在Java中,this通常指当前对象,super则指父类。当你想要...
  • 一、this和super关键字区别this...this关键字只能出现在非static修饰代码中super表示父类对象:super.属性 表示父类对象中成员变量super.方法()表示父类对象中定义方法super() 表示调用父类构造方法可以指定参...
  • 关键字super明确显式地指出一个类可以它父类构造函数、方法和变量。 关键字super和继承一起建立类和它父类紧密联系。继承隐含地指出子类对父类所拥有访问权限。例如,当我们要调用一个实例方法时,如果...
  • super 的作用: 1 . super可以在子类中引用父类的成员,通过 .的方式和属性。this相对应。 2. 在子类的构造方法中可以可使用super(参数列表)语句调用父类的构造方法 3. 注意: 子类的构造方法中一定要调用...
  • this和super关键字的作用区别 this:是对象对自身的引用,没有继承也可以使用,调用本类的构造 super:对父类对象的引用,只能在继承条件下使用,调用父类的构造 super注意点: super调用父类的构造方法,必须在...
  • 一、super关键字的作用 1、子类在构造方法中显示调用父类构造方法 super可以在子类的构造方法中显示调用父类的构造方法;并且这行代码必须出现在子类构造方法的第一行。原因:因为父类构造方法没有执行之前父类...
  • Java中super关键字及其作用 super关键字及其作用 A:super关键字指代父类对象引用(super代表父类存储空间标识) B:作用: a:访问被子类隐藏父类同名成员变量和成员方法 ; b:调用父类构造方法,且必须在子类构造...
  • super和this关键字 简单的说一下this就是指代当前类,super就是指代父类。this和super完全可以当作一个类来使用,调用方法等。...JAVA中this用法小结super关键字的作用Java核心(七):this和super的区别 ...
  • java中的super关键字是一个引用变量,用于引用父类对象。关键字super”以继承概念出现在类中。主要用于以下情况: 1.使用super与变量:当派生类和基类具有相同数据成员时,会发生此情况。在这种情况下,JVM...
  • 3.super的父类构造调用,必须是子类构造方法的第一个语句,不能一个子类构造调用多次super关键词。 总结: 子类必须调用父类构造方法,不写则赠送super(); 写了则用写的指定的super调用,super只能有一个,且必...
  • Java中关于super关键字的作用

    万次阅读 2019-01-07 20:57:52
    在子类继承父类中,一般有一行super的语句,需要记住三种使用方法: 1、super.变量/对象名; 使用这种方法可以直接访问父类中的变量或对象,进行修改赋值等操作 2、super.方法名(); 直接访问并调用父类中的方法 3、...
  • this表示当前对象引用(并不是当前对象),可以借助this来访问对象的字段和方法。 this关键字的作用: ...super关键字的作用: 调用父类的构造方法 去访问被隐藏的父类的属性 去调用被覆写的父类的方法 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 629
精华内容 251
关键字:

关键字super的作用