精华内容
下载资源
问答
  • 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关键字 this是自身的一个对象,代表对象本身可以理解为指代当前的对象,它可以调用当前对象的属性、方法构造方法,一般情况下可以省略,必须使用this的地方是区分出现名字重复的参数属性 与this...

    this和super关键字

    1. this是自身的一个对象,代表对象本身可以理解为指代当前的对象,它可以调用当前对象的属性、方法和构造方法,一般情况下可以省略,必须使用this的地方是区分出现名字重复的参数和属性

    2. 与this类似,super相当于是指代当前的对象的父类,调用父类的属性、方法和构造方法

    super和this有什么区别?

    1. this指代当前对象,super指代父类对象
    2. this可以调用自身的属性和方法还有父类的属性和方法
    3. super只能调用父类的属性和方法
    4. this可以调用当前类的其它构造方法,super调用父类构造方法

    super调用父类的构造方法:
    当创建子类对象时,如果父类存在无参的构造方法,系统会自动调用父类无参的构造方法;如果父类不存在无参的构造方法,就必须使用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; } } ...

    铁子们,快扫码关注啦!或 wx搜索:“聊5毛钱的java”,关注可领取博主的Java学习视频+资料,保证都是干货

    今天就用最通俗易懂的大白话来聊一聊Java中的this和super以及this()和 super()

    1、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;
    	}
    
    }
    

    上述代码是很常见的javabean的定义,里边经常会出现this这个关键字

    那有思考过为什么这里需要用this这个关键字吗?

    为了更简单的解释这个问题,将上述的代码改一下

    把set方法里的this.name的this去掉,变成了name=name,就会发现个问题,这2个name都是局部变量的name,这就变成了局部变量给局部变量赋值了, 但是咱们是想给对象的name赋值,并不是想给局部变量赋值,由于名称一样导致区分不出来了

    所以必须用this来区分一下;当然如果两个不重名的话,name=nnn 这种的不加this是没问题的,这是因为它是先在局部找变量,如果找到了就用局部变量,没找到就去找全局变量。

    那这个this到底是啥呢?

    this是当前对象的引用,就是说当前用构造函数建的对象是谁,这个this就代表谁,它是一个引用

    另外一个问题,如果构造函数想调用另一个构造函数该怎么办呢?

    这个时候就需要使用this()了

    注意:如果在构造函数里调用其他重载的构造函数时,则,被调用的那个构造函数必须放在代码的第一行

    下边是示例:

    正确的

    错误的

    2、super关键字

    上述例子是父类里定义了一个字段是num,子类里没有定义,所以最后的输出结果是showNum=4

    但是如果子类也定义了一个num值为5,那打印出来的一定是5,因为在调用成员(成员变量和成员方法)时如果不特殊标明,前边其实默认省略了this,他默认调用的是子类的

    但是如果这时候我就想用父类的不想用子类的,怎么办

    这时候又出现了区分不出来的情况,所以要用super来标明你要调用父类的,而不是子类的

    当只有父类有,子类没有的情况下,则调的是父类的(因为子类继承了父类,子类就拥有了父类除了私有外的所有东西)

    当父类和子类都有的情况下,默认调用的是子类的,但是用super标明了以后调的是父类的

    如上图所示,this和super的引用是这样指向对象的成员变量和方法:

    this不仅指向了子类的成员变量和方法,它还指向了子类从父类继承过来的变量和方法

    而super仅仅只是指向了子类从父类继承的成员变量和方法。

    那如果子类构造函数想调用父类的构造函数,怎么办?

    这时候就要用到super();了

    *****注意:在子类的构造函数里都必须去调用父类的构造函数,你不写其实第一行都有一个隐式的super();

    如果父类里不定义无参的构造的话子类的构造函数会报错,所以说明在子类的构造函数默认的都有一句隐式的super();

    你的构造函数里默认的都有一个隐式的super();去调用父类无参的构造,但是如果你的构造函数里不想调用默认的父类无参构造,而是想调用父类其他的构造函数,则你可以显式的写出来,而且如果你写了则调用父类的supper(xxx) 必须放在第一行

    以上就是对this和super的一些总结,可能有点乱,但是还是希望对大家有所帮助

    铁子们,如果觉得文章对你有所帮助,可以点关注,点赞

    也可以关注下公众号:扫码或 wx搜索:“聊5毛钱的java”,欢迎一起学习交流,关注公众号可领取博主的Java学习视频+资料,保证都是干货

    3Q~

    纯手敲原创不易,如果觉得对你有帮助,可以打赏支持一下,哈哈,感谢~

               

    展开全文
  • 简述java中this和super关键字的区别和作用

    千次阅读 多人点赞 2019-04-09 08:58:20
    JAVA使用super来引用父类的成分,用this来引用当前对象,如果一个类从另外一个类继承,我们new这个子类的实例对象的时候,这个子类对象里面会有一个父类对象。怎么去引用里面的父类对象呢?使用super来引用,...

    super

    在JAVA类中使用super来引用父类的成分,用this来引用当前对象,如果一个类从另外一个类继承,我们new这个子类的实例对象的时候,这个子类对象里面会有一个父类对象。怎么去引用里面的父类对象呢?使用super来引用,this指的是当前对象的引用,super是当前对象里面的父对象的引用。

    所以,super关键字有以下用法:

    • 1, 引用: 父类对象 访问父类被遮盖的属性或调用父类被覆盖的方法。
      super. :调用父类中属性或者方法
      super.父类属性名:调用父类中的属性
      super.父类方法名:调用父类中方法

    • 2,super():用在子类的构造方法中,能够决定jvm在去构造父类对象时,调用父类哪一个构造方法
      super(); 调用父类的无参构造方法
      super(实参);调用父类的有参构造方法

      super必须放在构造方法中的第一个语句
      

      如果一个构造方法的第一句话,不是this(。。。),也不是super(。。。),
      系统会默认添加 super();

    • super常常用来把构造参数传给父类,去设置父类的属性;

    • 构造方法常常用来设置属性,给属性赋值。

      构造方法中无参构造方法很重要,要尽量保证每个类都写一个无参构造方法

    this关键字:

    this关键字两个重要用法:

    • 1, 引用 当前对象 当实例变量和局部变量命名冲突的时候,用this,表示实例变量
      this.属性名 表示当前对象的属性
      this.方法名(实参); 表示调用当前对象的方法
      用在构造方法或者成员方法中

    注意:当局部变量和成员变量 发生冲突时,使用this.进行区分
    若不冲突,写不写this.都可以

    • 2, 用在构造方法中 this(参数1,参数2,….) 调用本类的其他构造方法
      必须是构造方法中的第一个语句,所以this只能用一次调用其他构造方法(同super)
      this();调用当前对象的无参构造方法
      this(实参); 调用当前对象的有参构造方法
      只能定义在构造方法内,只能定义在有效代码第一行

    注意:避免构造方法的递归调用
    下面程序清晰讲明了super,this关键字的区别和作用:

       class TestSuper{
        	public static void main(String[] args) {
        		 new B();//调用B  的无参构造方法
        		  System.out.println("--------------");
        		  new B("abcd");
        	}
        }
        
        class A{
        	private String name;
        	public A(){
        		System.out.println("A()");
        	}
        	public A(String str){
        		this.name = str;
        		System.out.println("A(String)"+name);
        		
        	}
        }
        class B extends A{
        	public B(){
        		super();  //默认添加,可写可不写,调用父类无参构造方法
        		System.out.println("B()");
        	}
        	public B(String str){
        		super(str);
        		System.out.println("B(String)");
        	}
        }
        
        
        
        //测试super关键字和this关键字的使用与区别
        class Super{
        	protected int a= 10;
        	public void method(){
        		System.out.println("Super method()");
        	}
        }
        //继承父类Super
        class Sub extends Super{
        	int a = 20;
        	//方法 的覆盖
        	public void method(){
        		System.out.println("Sub method()");
        	}
        
        	public void print(){
        		int a = 30;
        		System.out.println(a);//30,局部变量优先
        		System.out.println(this.a);//20    引用当前实例对象
        		System.out.println(super.a);//10  父类引用
        		method();//sub method();  
        		super.method();//Super method();
        	}
        
        }
    
    
    展开全文
  • this和super的使用其实很简单,不过有些猿们啊,查看了很多资料后,还是不得要领。 好吧,那我就在众望下整理出秘籍,供猿们修练~~~ 此乃家居出行面试互侃必备啊 this this 表示当前对象 使用上细分的话,...
  • java中thissuperthis()、super()的用法区别

    千次阅读 多人点赞 2018-05-08 12:26:42
     this是一个引用类型, 在堆的每一个java对象上都有thisthis保存内存地址指向自身。二.thisthis()能用在哪些地方?this可以用在成员方法.this()可以用在构造方法.语法: this(实参);通过一个构造方法去...
  • java中关键字this和super的用法区别

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

    千次阅读 2019-09-15 17:25:08
    1、super从子类调用父类的构造方法,this()在同一类内调用其它方法。 2、尽管可以用this调用一个构造器,但却不能调用两个 3、this和super不能同时出现在一个构造函数里面,因为this必然会调用其它的构造函数,...
  • java中this和super的区别

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

    千次阅读 2019-03-27 19:22:21
    Java中,无论程序员是否在实例方法添加,编译器都会自动往实例方法加入一个this参数,this参数的类型为方法所在类的类型。 假设说fun() 是类的一个方法,当调用这个方法的时候,编译器会把它变为this.fun...
  • Java中thissuper的区别

    万次阅读 多人点赞 2016-12-05 23:23:39
    thissuper关键字在java中构造函数的应用: **super()函数** super()函数在子类构造函数调用父类的构造函数时使用,而且必须要在构造函数的第一行,例如:class Animal { public Animal() { System.out....
  • Java中this和super的用法总结

    千次阅读 2017-02-25 10:56:25
    开始学习Java的时候,遇上了super和this,刚开始的傻傻分不清楚怎么回事,看了一篇很不错的博文,顿时豁然开朗。   这几天看到类在继承时会用到this和super,这里就做了一点总结,与各位共同交流,有错误请各位...
  • this和super关键字的区别(Java

    千次阅读 多人点赞 2018-08-26 05:59:43
    一、Java当中this和super的区别: 1.属性的区别: (1)this访问本类的属性,如果本类没有这个属性则访问父类的属性。 (2)super访问父类的属性。 2.方法的区别: (1)this访问本类的方法,如果本类...
  • javathis()与super()使用详解

    万次阅读 多人点赞 2018-01-10 16:36:20
    this三大作用this调用属性、调用方法、利用this表示当前对象。 ...this ...this是自身的一个对象,代表对象本身,可以...this的用法在java中大体可以分为3种: 1.普通的直接引用 这种就不用讲了,this相当于
  • Java中this关键字的作用和用法

    万次阅读 多人点赞 2018-09-03 19:22:39
    简单总结一下Java中this关键字的作用与用法。 参考文献: Java中this关键字详解 Java this 关键字用法 java中this关键字的用法 Java this关键字 java中this关键字的作用 功能概述 this关键字主要有三个应用...
  • Java中this关键字和super关键字用法

    千次阅读 2017-08-25 10:32:59
    构造方法this关键字 构造方法是一个类的对象在通过new关键字创建时自动调用的,在程序不能向调用其他方法一样通过方法名(也就是类名)来调用。但如果一个类有多个构造方法,可以在一个构造方法通过this...
  • Java中this和super的区别

    千次阅读 2021-02-05 13:59:40
    JavaSE基础之this和super的区别
  • Java中super和this关键字的使用

    千次阅读 2019-05-23 14:18:17
    在使用super和this关键字时, 以下描述正确的是() A. 在子类构造方法使用super()显示调用父类的构造方法, super()必须写在子类构造方法的第一行, 否自编译不通过 ... this() super() 可以在static 环境使用...
  • java继承和super和this

    千次阅读 2021-09-11 10:47:01
    继承 继承格式://声明在子类上 public class 子类名 extends(继承单词) 父类...还有:java中的类在没有继承的情况下都是默认继承Object类 Object :根类,超类,基类 java中所有的类都直接或间接的继承Object. ...
  • 1.this关键字this只能用于实例有关的代码块,如实例方法,构造方法,实例初始化代码块或实例变量的初始化代码块等,this就代表当前或者正在创建的实例对象的引用,通常可以利用这一关键字实现与局部变量同名的实例...
  • Java基础知识面试题(2020最新版)

    万次阅读 多人点赞 2020-02-19 12:11:27
    文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JREJDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序小程序的...
  • 这个问题可以这样简单认为:构造函数调用其他构造函数的代码要写在第一行,如果同时写super()和this(),两个语句都需要放在第一行,这样冲突,所以不可以同时出现在同一构造函数。 原理解释 Java的执行构造...
  • 当有相同的属性或者方法是this子类表示调用自己的属性或者方法, super调用父类的属性或者方法。 当子类调用的属性方法在子类不存在时,那么this和super都是调用父类的属性或者方法 ...
  • 一句话搞懂Java中this和super的实现原理

    千次阅读 热门讨论 2021-05-23 23:22:51
    Java ,每当一个对象创建后,Java 虚拟机都会给这个对象分配一个指向自身的引用,也就是 this。同时如果对象是子类对象,则还会有一个 super 引用指向当前对象的父类对象。 this 的本质是:编译器在调用某个...
  • Java中static关键字的作用

    万次阅读 多人点赞 2015-03-29 08:45:56
    Java中static关键字的作用
  • Java中super关键字及super()的使用

    千次阅读 多人点赞 2020-07-06 22:52:15
    (2)super和this很类似,我们对比着学习。 先复习一下this关键字的使用。 this关键字: this能出现在实例方法构造方法this的语法是“this.”this()”; this不能出现在静态方法this大部分情况下是...
  • 1.this&super 什么是this,this是自身的一个对象,代表...要注意的是this只能在类的非静态方法使用,静态方法静态的代码块绝对不能出现this。his也可作为构造函数来使用。在后面可以看到 而什么是super,可以
  • java super this 关键字的区分使用

    千次阅读 多人点赞 2018-10-10 16:07:46
    java super this 关键字的区分使用 在java使用super来调用父类的指定操作: super可用于访问父类定义的属性 super可用于调用父类定义的成员方法 super可用于在子类构造方法调用父类的构造器 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 733,138
精华内容 293,255
关键字:

java中this和super的作用

java 订阅