精华内容
下载资源
问答
  • this和super区别和各自的作用?

    千次阅读 多人点赞 2019-05-27 20:34:17
    文章目录一、二者的区别二、注意点: 一、二者的区别 1.属性的区别this访问本类中的属性,如果本类没有此属性则从父类中继续查找。super访问父类中的属性。 2.方法的区别this访问本类中的方法,如果本类没有此...

    一、二者的区别

    1.属性的区别:
    this访问本类中的属性,如果本类没有此属性则从父类中继续查找。super访问父类中的属性。
    2.方法的区别:
    this访问本类中的方法,如果本类没有此方法则从父类中继续查找。super访问父类中的方法。
    3.构造的区别:
    this调用本类构造,必须放在构造方法的首行。super调用父类构造,必须放在子类构造方法首行。
    4.其他区别:
    this表示当前对象。super不能表示当前对象
    A、this. 变量和super.变量
    this.变量 调用的当前对象的变量;
    super.变量 直接调用的是父类中的变量。
    B、this(参数)和super(参数)方法
    this(参数) 调用(转发)的是当前类中的构造器;
    super(参数) 用于确认要使用父类中的哪一个构造器。

    二、注意点:

    1)在对拥有父类的子类进行初始化时,父类的构造方法也会执行,且优先于子类的构造函数执行;因为每一个子类的构造函数中的第一行都有一条默认的隐式语句super();
    2)this() 和super()都只能写在构造函数的第一行;
    3)this() 和super() 不能存在于同一个构造函数中。第一,this()和super()都必须写在构造函数的第一行;第二,this()语句调用的是当前类的另一个构造函数而这个另一个构造函数中必然有一个父类的构造器,再使用super()又调用一次父类的构造器, 就相当于调用了两次父类的构造器,编译器不会通过;
    4)this和super不能用于static修饰的变量,方法,代码块;因为this和super都是指的是对象(实例)。

    展开全文
  • 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关键字。

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

    千次阅读 多人点赞 2018-08-26 05:59:43
    一、Java当中this和super区别: 1.属性的区别: (1)this访问本类中的属性,如果本类没有这个属性则访问父类中的属性。 (2)super访问父类中的属性。 2.方法的区别: (1)this访问本类中的方法,如果本类...
    一、Java当中this和super的区别:
    1.属性的区别:
         (1)this访问本类中的属性,如果本类没有这个属性则访问父类中的属性。
         (2)super访问父类中的属性。 
    2.方法的区别:
         (1)this访问本类中的方法,如果本类没有这个方法则访问父类中的方法。
         (2)super访问父类中的方法。 
    3.构造的区别:
         (1)this调用本类构造构造,必须放在构造方法的首行。
         (2)super调用父类构造,必须放在子类构造方法首行。 
         (3)其他区别:this表示当前对象。super不能表示当前对象 
    
    二、this. 变量和super.变量
         (1)this.变量:调用的当前对象的变量; 
         (2)super.变量:直接调用的是父类中的变量。 
    
    三、this(参数)和super(参数)方法 
         (1)this(参数):调用(转发)的是当前类中的构造器; 
         (2)super(参数):用于确认要使用父类中的哪一个构造器。
     
    四、注意点: 
         (1)在对拥有父类的子类进行初始化时,父类的构造方法也会执行,且优先于子类的构造函数执行;因为每一个子类的构造函数中的第一行都有一条默认的隐式语句super(); 
         (2)this() 和super()都只能写在构造函数的第一行; 
         (3)this() 和super() 不能存在于同一个构造函数中。
                1)this()和super()都必须写在构造函数的第一行;
                2)this()语句调用的是当前类的另一个构造函数而这个另一个构造函数中必然有一个父类的构造器,再使用super()又调用一次父类的构造器, 就相当于调用了两次父类的构造器,编译器不会通过; 
         (4)this和super不能用于static修饰的变量,方法,代码块;因为this和super都是指的是对象(实例)。

     

    展开全文
  • super和this区别

    千次阅读 2017-11-10 19:31:50
    参考博客:https://www.cnblogs.com/hasse/p/5023392.html http://blog.csdn.net/zuoyang1990/article/details/53471494thisthis是自身的一个对象,代表...this的用法在java中大体可以分为3种: 1、普通的直接引用
     
    参考博客:https://www.cnblogs.com/hasse/p/5023392.html 
    

                      http://blog.csdn.net/zuoyang1990/article/details/53471494

    this

    this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针。

    this的用法在java中大体可以分为3种:

     1、普通的直接引用

              

    /**
     * 当在一个类中明确指出使用对象自己的变量或函数时需加上this的引用
     *
     */
    class Hello{
    	String str = "hello";
    	public Hello(String s){
    		System.out.println("s = " + s);
    		System.out.println("1 -> this.s = " + this.str);
    		// 当在一个类中明确指出使用对象自己的变量或函数时需加上this的引用
    		this.str = s;
    		System.out.println("2 -> this.s = " + this.str);
    	}
    }
    
    public class test1{
    	
    	public static void main(String[] args) {
    
    		Hello h = new Hello("word");
    		
    		
    	}
    
    }

    运行结果为:

    s = word
    1 -> this.s = hello
    2 -> this.s = word


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

    class Hello1{
    	String name = "hello";
    	public void setName(String name){
    		this.name = name;
    	}
    	
    	public String getName(){
    		return this.name;
    	}
    }
    
    
    public class test2 {
    
    	public static void main(String[] args) {
    
    		Hello1 h = new Hello1();
    		
    		h.setName("word");
    		System.out.println(h.getName());	
    	}
    }


    运行结果为:

    word

    3、引用构造函数

    这个和super放在一起讲

    super

    super可以理解为指向自己超(父)类对象的一个指针,而这个超类指的是离自己最近的一个父类。

    super也有三种用法

    1、普通的直接引用

    与this相似,super相当于是指向当前对象的父类,这样就可以用super.xxx来引用父类的成员

    class Animal{
    	private String member1 = "member1";
    	protected String member2 = "member2";
    	public String member3 = "member3";
    	String member4 = "member4";
    	
    	public Animal(){
    		
    	}
    }
    
    class Cat extends Animal{
    	public Cat(){
    		// System.out.println(super.member1); 不能访问标为private的成员
    		System.out.println(super.member2);
    		System.out.println(super.member3);
    		System.out.println(super.member4);//如果子类与父类在同一包内,可以访问默认(无修饰符)的成员变量与方法。
    	}
    }
    
    public class test3 {
    	public static void main(String[] args) {
    		Cat c = new Cat();
    	}
    }


    
    

    
    

    运行结果为:

    member2member3member4

    2、子类中的成员变量或方法与父类中的成员变量或方法重名

    class Animal{
    	
    	String name = "animals";
    	void value(){
    		name = "Animal";
    	}
    }
    
    class Dog extends Animal{
    	
    	String name;
    	void value(){
    		name = "Dog";
    		super.value();
    		System.out.println(name);
    		System.out.println(super.name);
    	}
    	
    }
    public class test4 {
    	public static void main(String[] args) {
    		Dog d = new Dog();
    		d.value();
    	}
    }

    运行结果:

    Dog

    Animal

    可以看到,这里既调用了父类的方法,也调用了子类的变量。若不调用父类方法value(),只调用父类变量name的话,则父类的name值为animals


    3、引用构造函数

    super(参数):调用父类中的某一个构造函数(应该为构造函数中的第一条语句)

    this(参数):调用本类中另一种形式的构造函数(应该为构造函数中的第一条语句)

    /**
     * super()函数在子类构造函数中调用父类的构造函数时使用,而且必须要在构造函数的第一行
     * 调用父类的方法
     */
    class Animal{
    	public Animal(){
    		System.out.println("父类无参构造函数:An animal");
    	}
    
    	public Animal(String name){
    		System.out.println("父类有参构造函数:"+name);
    	}
    
    	void getName(String name){
    		System.out.println("父类:this is " + name);
    	}
    }
    class Dog extends Animal{
    
    	public Dog(){
    		// super()函数在子类构造函数中调用父类的构造函数时使用,而且必须要在构造函数的第一行
    		// 如果子类构造函数中没有写super()函数,编译器会自动帮我们添加一个无参数的super()
    		
    		// 1、2、3、4只能选其一,且必须在构造函数第一行
    		super();//1:调用父类无参构造函数
    //		super("animals");//2:调用父类相应有参构造函数
    //		
    //		this();//3:调用子类本身的无参构造函数
    //		this("animals");//4:调用子类本身相应的有参构造函数
    		
    		//super.getName("animals");//调用父类的方法
    		this.getName("animals");//若子类重写了此方法则调用子类本身的方法,若子类未重写,则调用父类的方法
    		System.out.println("A Dog");
    	}
    	
    	void getName(String name){
    		System.out.println("子类:this is " + name);
    	}
    }
    
    public class Main {
    	
    	public static void main(String[] args) {
    		Dog dog = new Dog();
    	}
    
    }

    输出结果为

    父类无参构造函数:An animal
    子类:this is animals
    A Dog


    super和this的异同:

    1、super(参数):调用基类中的另一个构造函数(应该为构造函数的第一条语句)

    2、this(参数):调用本类中另一种形式的构造函数(应该为构造函数的第一条语句)

    3、super:它引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员数据或函数,基类与派生类中有相同成员定义时:super.变量名,super.成员函数数据名(实参))

    4、this:它代表当前对象名(在程序中易产生二义性之处,应使用this来指明当前对象;如果函数的形参与类中的成员数据同名,这时需用this来指明成员变量名)

    5、调用super()必须写在子类构造方法的第一行,否则编译不通过。每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的构造函数,那么在遍历的时候就会报错

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

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

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

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

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

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

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

    万次阅读 2018-08-29 23:39:48
    1.this关键字  (1.)每个类的每个非静态方法(没有被static修饰)都会隐含一个this关键字,它指向调用这个方法的对象;当在方法中使用本类属性时,都会隐含地使用this关键字,当然也可以明确使用。  this可以看成...
  • supersuper关键字和this的作用类似,将被隐藏的父类的成员变量成员方法变为可见,或者说用来引用被隐藏的父类的成员成员变量成员方法。 使用场景: 1.使用super和this调用成员变量方法 有时会遇到子类中的...
  • this和super this:代表对象(代表本类类型对象的引用)。就是所在方法所属对象的引用。哪个对象调用了this所在的方法,this就代表哪个对象,就是哪个对象的引用。 this还可以用于构造方法间的调用。 调用格式:...
  • package com.cj.study.thissuper; public class Student{ public String name; public void setName(String name) { this.name = name; } public String getName() { return name; } } ...
  • java this和super区别

    2020-02-06 09:39:49
    1.this和super区别 1.this表示本类对象 super表示父类操作 2.本类操作:this.属性、this.方法()、this() 父类操作:super.属性、super.方法()、super() 3.使用构造(区别) this调用本类构造,放在首行 super子类调用父类...
  • java中关键字this和super的用法和区别

    千次阅读 2019-03-18 20:37:38
    this和super的用法以及它们的区别在这里做了一些整理,大家可以参考使用 1. thisthis是自身的一个对象,以下是几种用法: 1.1.当形参与成员变量重名时,用this来区分,this.name 代表类的成员变量 1.2.引用构造...
  • this和super区别

    2020-08-17 22:40:46
    一、this this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针。 this的用法在java中大体可以分为3种: 1、普通的直接引用 this相当于是指向当前对象本身。 2、形参与成员名字重名,用this来...
  • this super区别 相同: this和super都是与实例有关的 使用this和super可以访问实例成员类成员(虽然通过this和super可以访问类成员,但不建议使用) 因此this和super都不能出现在static方法中和static代码...
  • java中thissuperthis()、super()的用法和区别

    千次阅读 多人点赞 2018-05-08 12:26:42
    this关键字:一.this是什么? this是一个引用类型, 在堆中的每一个java对象上都有thisthis保存内存地址指向自身。二.thisthis()能用在哪些地方?this可以用在成员方法中.this()可以用在构造方法中.语法: ...
  • 主要介绍了Java this()和super()的使用注意的相关资料,需要的朋友可以参考下
  • 要说this和super就不得不说Java的封装继承了。这篇文章主要介绍了Java中的this和super实例浅析,需要的朋友可以参考下
  • this和super关键字的作用区别 this:是对象对自身的引用,没有继承也可以使用,调用本类的构造 super:对父类对象的引用,只能在继承条件下使用,调用父类的构造 super注意点: super调用父类的构造方法,必须在...
  • 简述java中this和super关键字的区别和作用

    千次阅读 多人点赞 2019-04-09 08:58:20
    在JAVA类中使用super来引用父类的成分,用this来引用当前对象,如果一个类从另外一个类继承,我们new这个子类的实例对象的时候,这个子类对象里面会有一个父类对象。怎么去引用里面的父类对象呢?使用super来引用,...
  • 1.this关键字 (1.)每个类的每个非静态方法(没有被static修饰)都会隐含一个this关键字,它指向调用这个方法的对象;当在方法中使用本类属性时,都会隐含地使用this关键字,当然也可以明确使用。 this可以看成是一个...
  • 区分局部成员之间的问题 super:指代父类对象 1.调用父类的构造器 super() 如果没有显示定义,调用父类的哪一个构造器,默认首行调用super()父类空构造 因为一般子类构造器的首行会默认调用父类空...
  • thissuper有什么区别this 在Java中,this用来指当前实例对象,它主要就是区分对象的成员变量还是方法的形参,当成员变量方法的形参相同名字的时候,就会用覆盖成员变量。 class Student{ String name ; ...
  • super,this区别和使用

    千次阅读 2016-03-25 22:28:06
    this的使用说明java的this关键字只能用于方法体内,java虚拟机(JVM)会给这个对象分配一个引用自身的指针,这个指针的名字就是this.注意:函数参数或者函数中的局部变量成员变量同名...5432112345super的使用说明s
  • this和super关键字 this是自身的一个对象,代表对象本身可以理解为指代当前的对象,它可以调用当前对象的属性、方法构造方法,一般情况...super和this有什么区别this指代当前对象,super指代父类对象 this可...
  • this表示当前调用方法的对象的引用: (谁调用这个方法,谁就是这个对象,这个this就是它的引用) 比如:public class This_Demo{ String name; public void setName(String name) { this.name = name;// 前...
  • Java中thissuper区别

    万次阅读 多人点赞 2016-12-05 23:23:39
    thissuper关键字在java中构造函数中的应用: **super()函数** super()函数在子类构造函数中调用父类的构造函数时使用,而且必须要在构造函数的第一行,例如:class Animal { public Animal() { System.out....
  • this super 关键字的作用   this 是对象内部指代自身的引用,同时也是解决成员变量局部变量同 名问题;this 可以调用成员变量,不能调用局部变量;this 也可以调用成员 方法,但是在普通方法中可以省略 this,在...
  • this用来指向当前实例对象,super指向可以用来访问父类的方法或者成员变量。 关于this的使用方法 class People{ String name; public People(String name) { this.name=name;//前面的name指的是这个类的...
  • this() super()的区别

    2018-12-28 15:28:38
    this()用于构造方法重载时调用本类中的其他构造方法。 class Value{ private String s; private int i; public Value() { } public Value(String s) { this(); this.s = s; } public Value(...
  • this和super分别代表什么意思

    千次阅读 2020-06-16 15:22:59
    super和this有什么区别this指代当前对象,super指代父类对象 this可以调用自身的属性方法还有父类的属性方法 super只能调用父类的属性方法 this可以调用当前类的其它构造方法,super调用父.
  • this和super的使用其实很简单,不过有些猿们啊,查看了很多资料后,还是不得要领。 好吧,那我就在众望下整理出秘籍,供猿们修练~~~ 此乃家居出行面试互侃必备啊 this this 表示当前对象 使用上细分的话,...
  • super和this的异同

    2019-04-04 16:42:54
    super(参数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句) this(参数):调用本类中另一种形成的构造函数(应该为构造函数中的第一条语句) super: 它引用当前对象的直接父类中的成员(用来...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,131,005
精华内容 452,402
关键字:

this和super的区别