精华内容
下载资源
问答
  • Java中this和super区别

    千次阅读 2021-02-05 13:59:40
    JavaSE基础之this和super区别

    this

    • this代表对象本身,相当于是对象自身的一个指针。

    • this的三种用法:

      • 1 直接引用对象本身。
      • 2 形参与成员名字重名,用this来区分。
      • 3 引用本类的构造函数。
    • 测试:

    public class Test {
        public static void main(String[] args) {
            Person p=new Person();
    
            //this直接引用
            System.out.println(p);//打印p对象的地址
            p.soutThis();//调用p对象中打印this的方法 可以发现,二者完全一致
    
        }
    }
    class Person{
    
        int sex;
        int age;
    
        public Person(){
    
        }
    
        public Person(int sex){
            //此处 形式参数和成员变量重名,this.sex代表该对象的成员变量
            this.sex=sex;
        }
    
        public Person(int sex,int age){
            //这里this代表引用本类中的构造方法
            this(sex);
            this.age=age;
        }
    
        public void soutThis(){
            //此处打印对象自身的地址
            System.out.println(this);
        }
    
    }
    

    super

    • super代表父类对象(离自己最近的一个父类),相当于是父类的一个指针。

    • super的三种用法:

      • 1 直接引用父类。
      • 2 子类中的成员变量或方法与父类中的成员变量或方法同名时,用super进行区分。
      • 3 引用父类构造函数
    • 测试:

    public class Test {
        public static void main(String[] args) {
            Orange orange=new Orange(5,"orange","Lorange");
        }
    }
    class Orange extends Fruit{
        String name;
    
        public Orange(int size,String color,String name){
            //调用父类的构造方法
            super(size,color);
            this.name=name;
        }
        
        public void info1(){
            //此处super用于区分子类与父类名字相同的成员变量
            System.out.println(this.name);
            System.out.println(super.name);
        }
    
        public void info2(){
            //此处super直接引用父类的成员变量
            System.out.println(super.size);
        }
    
    }
    class Fruit{
        int size;
        String color;
        String name;
    
        public Fruit(){
            
        }
        
        public Fruit(int size,String color){
            this.size=size;
            this.color=color;
        }
    
        public Fruit(int size,String color,String name){
            this.size=size;
            this.color=color;
            this.name=name;
        }
    }
    

    注意事项:

    • (1)使用super调用父类中的某一个构造函数时,该语句应该为构造函数中的第一条语句。

    • 使用this调用本类中另一种形式的构造函数,该语句应该为构造函数中的第一条语句。

    • (2)thissuper对成员方法和成员变量的使用是一样的。

    • (3)thissuper都是指的对象实例,所以不能再任何static语句中使用。

    • (3)不能使用this调用两个构造方法。

    • (4)his和super不能同时出现在一个构造函数里面。

      • 因为每一个子类的构造函数中的第一行都有一条默认的隐式语句super();this调用的其它构造方法必然也会有这条语句,这样就会冲突,失去了语句本身的意义。
    二者本质上的区别就是代表的对象不同,一个代表自身,一个代表父类。二者的使用上类似。
    展开全文
  • java中this和super区别

    千次阅读 2019-07-18 11:43:28
    this是一个引用类型, 在堆的每一个java对象上都有thisthis保存内存地址指向自身。 二.thisthis()能用在哪些地方? this可以用在成员方法. this()可以用在构造方法.语法: this(实参); 通过一个构造方法去...

    this关键字:
    一.this是什么?
    this是一个引用类型, 在堆中的每一个java对象上都有this,this保存内存地址指向自身。

    二.this及this()能用在哪些地方?
    this可以用在成员方法中.
    this()可以用在构造方法中.语法:
    this(实参);
    通过一个构造方法去调用另一个构造方法。
    目的:代码重用。
    this(实参);必须出现在构造方法的第一行。
    应用实例:
    public class ThisTest01{

    public static void main(String[] args){
    
        /*
        //创建对象
        MyDate t1 = new MyDate(2008,8,8);
        System.out.println(t1.year+"年"+t1.month+"月"+t1.day+"日");
        //创建对象
        MyDate t2 = new MyDate(2012,12,20);
        System.out.println(t2.year+"年"+t2.month+"月"+t2.day+"日");
        */
    
        MyDate t3 = new MyDate();
    
        System.out.println(t3.year+"年"+t3.month+"月"+t3.day+"日");
    
    }
    

    }

    //日期
    class MyDate{

    //Field
    int year;
    int month;
    int day;
    
    //Constructor
    //需求:在创建日期对象的时候,默认的日期是:1970-1-1
    MyDate(){
        this(1970,1,1);
        /*
        this.year = 1970;
        this.month = 1;
        this.day = 1;
        */
    }
    
    MyDate(int _year,int _month,int _day){
        year = _year;
        month = _month;
        day = _day;
    }
    

    }
    this为什么不能用在静态方法中.
    静态方法的执行根本不需要java对象的存在。直接使用 类名. 的方式访问。而this代表的是当前对象。所以静态方法中根本没有this
    根据构造方法的执行顺序,静态的方法是先于对象存在的,也就是说在静态方法加载的时候有,对象还没有创建!!!

    三.super()用在构造方法中:
    语法:super(实参);
    
    作用:通过子类的构造方法去调用父类的构造方法.
    
    语法规则:一个构造方法第一行如果没有this(...);也没有显示的去调用super(...);
    系统会默认调用super();
    
    注意:
    

    super(…);的调用只能放在构造方法的第一行.
    super(…)和this(…)不能共存。
    super(…);调用了父类中的构造方法,虚拟机会创建父类对象,但不是new 出来的;是虚拟机在执行字节码时在初始化方法 init(该方法在字节码中)中创建的对象!!!
    在java语言中只要是创建java对象,那么Object中的无参数构造方法一定会执行。

    四.super关键字做引用,
    
    语法:super.xx 来调用父类的成员方法或成员变量:
    
    注意:super是一个引用但是却没办法输出,Sun公司也没有给出相关的声明,导致此处有些模棱两可,所以不必纠结其他,记住这个结论就行
    

    展开全文
  • java中this和super的用法区别

    千次阅读 多人点赞 2019-06-03 22:12:53
    java中this和super的用法区别 this this是自身的一个对象,代表对象本身,用法大致分为以下3类: 1、普通直接引用当前对象本身 2、形参成员名重名,用this来区分 3、引用构造方法 ,this(参数) ,应该为构造函数...

    java中this和super的用法区别

    this

    this是自身的一个对象,代表对象本身,用法大致分为以下3类:

    1、普通直接引用当前对象本身

    2、形参和成员名重名,用this来区分

    3、引用构造方法 ,this(参数) ,应该为构造函数中的第一条语句,调用的事1本类中另外一种形式的构造方法。

    super

    super可以理解为是指向自己超(父)类对象,这个超类指的是离自己最近的一个父类。也大致分为3中中用法

    1、普通的直接引用,与this类似,只不过它是父类对象,可以通过它调用父类成员。

    2、子类中的成员变量或方法与父类中的成员变量或方法同名,可以使用super区分。

    3、引用构造方法,super(参数):调用父类中的某一个构造方法(应该为构造方法中的第一条语句)。

    例子

    class Person { 
        public static void prt(String s) { 
           System.out.println(s); 
        } 
        //构造方法(1) 
        Person() { 
           prt("父类·无参数构造方法: "+"A Person"); 
        }
        //构造方法(2) 
        Person(String name) { 
           prt("父类·含一个参数的构造方法: "+"A person's name is " + name); 
        }
    } 
        
    public class Chinese extends Person { 
        Chinese() { 
           super(); // 调用父类构造方法(1) 
           prt("子类·调用父类无参数构造方法" + "A chinese coder"); 
        } 
        
        Chinese(String name) { 
           super(name);// 调用父类具有相同形参的构造方法(2) 
           prt("子类·调用父类”含一个参数的构造方法“: "+"his name is " + name); 
        } 
        
        Chinese(String name, int age) { 
           this(name);// 调用具有相同形参的构造方法(3)-->调用(2)
           prt("子类:调用子类具有相同形参的构造方法:his age is " + age); 
        } 
        
        public static void main(String[] args) { 
           Chinese cn = new Chinese(); 
           cn = new Chinese("people"); 
           cn = new Chinese("people", 18); 
        } 
    }
    

    总结

    1、super()和this()类似,区别是,super()从子类中调用父类的构造方法,this()在同一类内调用其它方法。

    2、super()和this()均需放在构造方法内第一行。

    3、尽管可以用this调用一个构造器,但却不能调用两个。

    4、this和super不能同时出现在一个构造函数里面,因为this必然会调用其它的构造函数,其它的构造函数必然也会有super语句的存在,所以在同一个构造函数里面有相同的语句,就失去了语句的意义,编译器也不会通过。

    5、this()和super()都指的是对象,所以,均不可以在static环境中使用。包括:static变量,static方法,static语句块。

    6、从本质上讲,this是一个指向本对象的指针, 然而super是一个Java关键字。

    展开全文
  • Java中this和super关键字的区别

    千次阅读 2016-11-12 14:52:07
    this强调的是对象的本身,通过this调用的属性方法都是它所属于的那个类的属性方法。属于对象类间的关系 super在子类调用父类的方法属性。属于子类父类两个类间的关系//父类 public abstract class ...

    this强调的是对象的本身,通过this调用的属性和方法都是它所属于的那个类中的属性和方法。属于对象和类间的关系
    super在子类中调用父类的方法和属性。属于子类和父类两个类间的关系

    //父类
    public abstract class AbstractPerson {
        int age;
        public AbstractPerson(int age) {
            //调用本类中的构造方法
            this(age);
            //调用本类中的属性
            this.age = age;
            System.out.println("父类构造方法");
        }
        public AbstractPerson() {   
        }
    }
    
    //子类
    public class Student extends AbstractPerson{
        public Student(int age) {
            //父类的构造方法
            super(age);
            //父类中的属性
            super.age=1;
            // TODO Auto-generated constructor stub
        }

    this和super在调用构造方法的时候必须都要放在第一行,而且只能是在一个构造方法中调用另外一个构造方法才能使用。由于子类的构造方法必须要调用父类的构造方法,所以子类的构造方法中只能出现super()调用父类构造方法的情况

    展开全文
  • package com.cj.study.thissuper; public class Student{ public String name; public void setName(String name) { this.name = name; } public String getName() { return name; } } ...
  • 要说this和super就不得不说Java的封装继承了。这篇文章主要介绍了Java中this和super实例浅析,需要的朋友可以参考下
  • Java中thissuper区别

    2018-06-27 22:41:45
    Java中thissuper区别 this&super; 什么是this,this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针。 Java关键字this只能用于方法的方法体内。当一个对象创建后, Java虚拟机(JVM)就...
  • javathis和super用法 this super 关键字的区别
  • 1、this是一个指向本对象的指针,而super是一个java的关键字 2、this和super不能同时出现在同一个构造方法 3、this出现在构造方法表示调用本类的其它构造方法,super出现在构造方法表示调用父类的构造方法 ...
  • 主要介绍了java中thissuper关键字的使用方法的相关资料,希望通过本文能帮助到大家,让大家彻底理解应用java中thissuper,需要的朋友可以参考下
  • this和super关键字 this是自身的一个对象,代表对象本身可以理解为指代当前的对象,它可以调用当前对象的属性、方法构造方法,一般情况...super和this有什么区别this指代当前对象,super指代父类对象 this可...
  • java中thissuper的详解
  • this表示当前调用方法的对象的引用: (谁调用这个方法,谁就是这个对象,这个this就是它的引用) 比如:public class This_Demo{ String name; public void setName(String name) { this.name = name;// 前...
  • Java中thissuper考题

    千次阅读 2015-03-28 23:07:20
    Java中thissuper考题
  • java中thissuper用法

    2008-05-19 02:07:05
    java中thissuper用法
  • JAVA中this和super关键字

    2015-04-26 12:29:37
    2.使用super&this调用成员变量方法 可以使用super访问父类被子类隐藏的变量或覆盖的方法。当前类如果是从超类继承而来的,当调用super.XX()就是调用基类版本的XX()方法。见示例1。 当类有两个同名变量,一...
  • 1.this&super 什么是this,this是自身的一个对象,代表...要注意的是this只能在类的非静态方法使用,静态方法静态的代码块绝对不能出现this。his也可作为构造函数来使用。在后面可以看到 而什么是super,可以
  • 很多java初学者对构造方法this和super方法分不清,在这里文件,可以对了解他们之间的关系起到一定的作用
  • java中this\super详解

    2011-05-25 22:39:42
    对于java中thissuper进行详细的解释
  • java:this和super

    2012-10-21 11:50:01
    详细描述了this和super区别,看完必懂
  • java中this和super

    2011-10-06 09:40:29
    初学java时对this和super的理解不是很容易
  • Java中this和super关键字的用法

    千次阅读 2018-01-11 10:01:04
    Java中this和super关键字比较常用,这两个关键字有许多共通的地方。this指的是当前对象,super指的是父类对象。this和super分别有两种用途,this的一种用途是引用当前对象的属性或方法;另一种是调用该类的其他...
  • Java this super 的用法及案例

    万次阅读 多人点赞 2020-10-05 10:28:53
    this 的用法在 Java 大体可以分为3种: 1.普通的直接引用 这种就不用讲了,this 相当于是指向当前对象本身。 2.形参与成员名字重名,用 this 来区分: 实例: class Person { private int age = 10; ...
  • java中this/super用法

    2013-09-16 17:12:57
    通过几个简单小李子,教你java基础语法中thissuper用法

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 731,739
精华内容 292,695
关键字:

java中this和super的区别

java 订阅