精华内容
下载资源
问答
  • super,this区别

    2013-02-21 00:52:59
    super,this区别super,this区别
  • javathissuper用法 thissuper 关键字的区别
  • super与this关键字的区别

    万次阅读 2021-02-25 15:59:51
  • 继承   说到继承就想到了我们常说的...super.成员变量(或成员方法)调用父类成员变量(或成员方法) this.成员变量(或成员方法)调用本类成员变量(或成员方法) super(...)调用父类构造方法 this(...)...

    继承

      说到继承就想到了我们常说的子承父业,java中的继承(extends)也就是运用了这种思想,这样可以减少代码的重复率以及方便维护。

    在这里插入图片描述

    super与this的区别

    superthis
    父类对象的引用本类对象的引用
    super.成员变量(或成员方法)

    调用父类成员变量(或成员方法)

    this.成员变量(或成员方法)

    调用本类成员变量(或成员方法)

    super(...)

    调用父类构造方法

    this(...)

    调用本类构造方法

    final、private关键字

    finalprivate
    被修饰的类不能被继承被修饰的方法不能被继承
    被修饰的方法不能被继承
    被修饰的变量赋值完后,不能被重新赋值被修饰的变量不能被继承

    代码演示

    父类
    public class Extend{
        public Extend() {
            System.out.println("我是父类构造方法");
        }
        public void show(){
            System.out.println("我是父类show方法");
        }
        final int i=100;
        String x="我是父类常量";
        private String p="我是父类私有变量";
        private void my(){
            System.out.println("我是父类私有方法");
        }
    }
    

    子类

    public class Extend2 extends Extend{
        public Extend2() {
           // super();系统隐藏的,你也可以写出来,这就是为什么父类构造函数会先执行的原因
            System.out.println("我是子类构造方法");
        }
        @Override
        public void show() {
            System.out.println("我是子类重写的show方法");
        }
    }
    

    测试类

    public class Text {
        public static void main(String[] args) {
            Extend2 e=new Extend2();//创建Extend对象e
            System.out.println(e.x);
            System.out.println(e.i);
           // System.out.println(e.p);这句话会出错
            e.show();
          //  e.my();这句话会出错
        }
    }
    

    结果

    我是父类构造方法
    我是子类构造方法
    我是父类常量
    100
    我是子类重写的show方法
    

      通过结果可以看出实例化子类时,回会先对父类构造函数进行实例化,其次是子类构造函数,重写过后的函数,结果也会是重写的内容,常量也被继承下来了,但是私有方法变量却不能被调用。

    展开全文
  • 介绍:this:当前对象 super:直接父类对象 this():当前类的无参构造方法,也...注意:1,当在方法内调用一个变量b,编译器会向上遍历,直到找到最近的一个引用变量为止:b—>this.b—>super.b,如果未找 到,编译器

    介绍

    • this:当前对象
    • super:直接父类对象
    • this():当前类的无参构造方法,也可以指定有参的如:this(a)
    • super():直接父类的无参构造方法,也可以指定有参的如:super(a)

    注意

    1,当在方法内调用一个变量b,编译器会向上遍历,直到找到最近的一个引用变量为止:b—>this.b—>super.b,如果未找到,编译器将显式提示错误信息;

    2,当变量b的定义只发生在父类时,此时  b=this.b=super.b;

    3,当局部变量b覆盖成员变量b时,使用this.b调用成员变量,此时的成员变量包括子类新增和继承的变量,不包含隐藏变量;

    4,当子类成员变量b覆盖父类成员变量b时,使用super.b调用这个被隐藏的成员变量;

    5,当子类重写了父类方法method(),可以使用super.method()来调用父类被隐藏的方法;

    6,super()与this()具备硬性使用条件,否则编译无法通过——Constructor call must be the first statement in a constructor.即 二者出现的位置必须是构造方法的第一行

    7,super()与this()并不像super.b与this.b一样可以向下替代,因为子类并不能继承父类的构造方法,仅仅是包含了父类的有参或无参构造器(默认无参);

    8,Implicit[不言明的,隐式的] super constructor Subject() is undefined. Must explicitly[明确地] invoke another constructor,这句话表明 —— 子类的构造方法中必须调用父类的构造方法,如果没有显式写出super(),则默认调用父类的无参构造方法。但此时如果父类写了有参的构造方法,编译器就不会再为父类默认创建无参构造方法,此时super()没有被定义,则必须在子类的构造方法中写明super(参数)或者在父类中显式写出父类的无参构造方法;

    实例

    父类

    public class Subject{    
        public String a="我是父类全局变量a";  
          
        public String b="我是父类全局变量b";  
          
        public void operation(){  
            System.out.println("我是父类方法");  
        };   
        public void operation1(){  
            System.out.println("我是父类方法");  
        };   
    }   

    子类

    public class MySubject extends Subject {    
        public String b="我是子类全局变量b";  
        @Override    
        public void operation() {    
            System.out.println(a);  
            System.out.println(this.a);  
            System.out.println(super.a);  
        }    
        @Override    
        public void operation1() {    
            String b="我是局部变量b";  
            System.out.println(b);  
            System.out.println(this.b);  
            System.out.println(super.b);  
        }    
          
        public static void main(String[] args) {  
            Subject sub=new MySubject();  
            sub.operation();    
            sub.operation1();    
              
        }   
    } 

    运行结果

    我是父类全局变量a  
    我是父类全局变量a  
    我是父类全局变量a  
    我是局部变量b  
    我是子类全局变量b  
    我是父类全局变量b

     

     
    展开全文
  • 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 用于构造...

    1 super关键字

    1.1 super用于方法

    1.1.1 用于构造方法

    在这里插入图片描述
    子类的构造函数里,其实默认调用的是父类的无参构造,此时super()可写可不写。
    在这里插入图片描述
    当子类向调用父类的有参构造时,super(参数列表)必须要写,要告诉编辑器调用的是哪个有参构造!
    在这里插入图片描述
    在子类构造方法中调用父类构造方法必须是第一行语句!

    1.1.2 用于普通方法

    在这里插入图片描述
      用于在子类中明确调用父类被覆写的方法!

    1.1.2 用于属性

    在这里插入图片描述
      表示调用父类中的属性!

    2 super与this关键字的区别

    Java中this关键字详解

    2.1 概念上

    this:访问本类中的属性及方法。
    super: 由子类访问父类中的属性、方法。

    2.2 查找范围

    this:先找本类,如果本类没有就调用父类。
    super:不查找本类直接调用父类。
    在这里插入图片描述
    在这里插入图片描述

    2.3 特殊之处

    this:可以表示当前对象!
    super:不可以 !

    展开全文
  • super与this区别

    千次阅读 2009-10-31 23:15:00
    super与this区别: 1,构造函数:super(参数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句)。EX:super(name,age)this(参数):调用本类中另一种形式的构造函数(应该为构造函数中的第一条语句)。EX:...
  • day09_12_super与this关键字图解
  • this与super有什么区别this 在Java中,this用来指当前实例对象,它主要就是区分对象的成员变量还是方法的形参,当成员变量和方法的形参相同名字的时候,就会用覆盖成员变量。 class Student{ String name ; ...
  • package com.cj.study.thissuper; public class Student{ public String name; public void setName(String name) { this.name = name; } public String getName() { return name; } } ...
  • superthis的异同: ...3)super: 它引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员数据或函数,基类派生类中有相同成员定义时如:super.变量名super.成员函数据名(实参) 4)t
  • https://blog.csdn.net/qq_32331073/article/details/77097809
  • superthis区别

    千次阅读 2015-09-13 12:57:34
    superthis的异同: 1)super(参数):调用基类中的某一个构造... 3)super: 它引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员数据或函数,基类派生类中有相同成员定义时如:super.变量名
  • this与super区别

    千次阅读 2019-01-03 10:59:01
    1.this与super继承关系 当子类创建对象后,该子类对象本身可以使用this来指代,而该对象当中的父类对象空间可以使用super来指代 示例: 所以继承关系图: 2.this与super调用普通成员构造方法 调用普通成员 ...
  • this:当前对象(new的对象|调用成员方法的对象) 1.调用本类中的其他构造器 this(参数列表) 2.区分局部和成员之间的问题 super:指代父类对象 1.调用父类的构造器 super() 如果没有显示定义...
  • super与this的用法

    2015-10-18 13:33:35
    1 superthis都是调用其他的构造方法 super放在构造方法的第一条语句,调用父类的某种构造方法,如果没有super语句,会默认调用父类中无参的构造方法,如果父类构造方法指明而且都有参数,子类中会报错,this调用...
  • superthis区别

    千次阅读 2019-03-02 17:50:04
    super: 它引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员数据或函数,基类派生类中有相同成员定义时如:super.变量名 super.成员函数据名(实参) this:它代表当...
  • super this 同时使用问题 大家都知道thissuper 调用构造函数时都必须放在第一句,今天同学问我的一个问题有点意思。 那么:我怎么在子类中 显式的用 super 初始化父类同时用 this 初始化子类?  ...
  • 来用父类中指定操作;...superthis的用法相像,this代表本类对象的引用,super代表父类的内存空间的标识 子类继承父类之后,new子类的时候,子类调用了父类的构造器,但是没有创建新的子类,只是调用了子类的构造器
  • super()与this()的区别

    2018-10-15 12:58:15
    文章目录1 相同:2 不同之处在于:...super()与this()的异同 1 相同: 都只能在构造函数中调用 代码会出错哦! public class Main extends teacher{ public static void main(String[] args) { //super(); }...
  • 1. 方法重载方法复写的区别 英文单词 Overloading Override 概念 方法名称相同,参数的个数或者类型不同 方法名称相同,参数的个数和类型相同,方法的访问权限不能更严格 使用...
  • Java中this与super区别

    2018-06-27 22:41:45
    Java中this与super区别 this&super; 什么是this,this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针。 Java关键字this只能用于方法的方法体内。当一个对象创建后, Java虚拟机(JVM)就...
  • java superthis区别

    2016-03-15 20:44:09
    使用super&this调用成员变量和方法  可以使用super访问父类被子类隐藏的变量或覆盖的方法。当前类如果是从超类继承而来的,当调用super.XX()就是调用基类版本的XX()方法。见示例1。  当类中有两个同名变量...
  • This():当前类的对象,super 父类对象。 Super():在子类访问父类的成员和行为,必须受类继承规则的约束 而this 他代表当前对象,当然所有的资源都可以访问. 在构造函数中,如果第一行没有写super(),编译器会自动...
  • 主要介绍了Java中super的几种用法并与this区别,有需要的朋友可以参考一下
  • 主要介绍了Java superthis的对比及使用的相关资料,java中this与super会经常在使用的时候混淆,需要的朋友可以参考下

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,138,344
精华内容 455,337
关键字:

super与this的区别