精华内容
下载资源
问答
  • Java中super和this关键字的使用

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

    在使用super和this关键字时, 以下描述正确的是()
    A. 在子类构造方法中使用super()显示调用父类的构造方法, super()必须写在子类构造方法的第一行, 否自编译不通过
    B. super() 和 this() 不一定要放在构造方法内的第一行
    C. this() 和 super() 可以同时出现在一个构造函数中
    D. this() 和 super() 可以在static 环境中使用, 包括static方法和static语句块

    这道题的正确选项是 A
    分析 :

    1. super() ,this() 和super, this关键字不是一个概念, 前者是在构造器之间相互调用的语法, 后者是代之父类或者本类的对象
    2. 每个构造器默认的第一行都是super(), 但有时候父类没有无参构造, 那么就必须在子类构造的第一行显式的声明要调用哪个构造器
    3. this() 和 super() 都必须出现在构造器中的第一行, 所以两者不可能出现在同一个构造器中.
    4. this和super都不能出现在静态方法或静态块中

    为什么要放在第一行 ?
    1. super() 防止子类后面调用父类属性, 在第一行就初始化父类
    2. this() 自带调用super(), 出现在第一行, 保证父类初始化的唯一性, 不然会多次重复初始化

    ~~

    以下是super和this关键字的详细解释

    ~~

    this 关键字

    this关键字可以出现在构造方法和实例方法中, 不能出现在静态方法中, 这是因为静态方法可以用类名来调用, 这时可能还没有对象.
    this主要有两种用法 :

    • 用在构造方法中, 调用本类的其他构造方法, 格式为 this(), 通过this调用本类的其他构造方法时, 该语句必须出现在构造方法中, 并且必须作为第一条语句出现
    • 代指当前对象
      例如 :
    public class Person {
        private String name;
        private int age;
        private String gender;
        public Person(){} //构造方法一
        public Person(String name,int age){ //构造方法二
            this(name,age,null);
        }
        public Person(String name, int age1, String gender){ //构造方法三
            this.name = name;//因为参数与类中的成员变量名相同, 所以用this.name来表示成员变量
            age = age1; //因为参数与类中的成员变量名不同, 所以可以不使用this
            this.gender = gender;
        }
    }
    

    super关键字

    super关键字有两种用法 :

    • 在子类的构造方法中使用super关键字调用父类的构造方法, super语句必须是该子类构造方法中的第一句.
      如果在子类中没有使用super关键字, 系统会默认调用父类没有参数的构造方法, 即隐含的使用super().
      注意这时父类一定应该有一个无参的构造方法
    • 使用super关键字调用被子类隐藏的成员变量和方法, 如果子类定义了和父类具有相同名字的成员变量, 子类就隐藏了从父类继承的成员变量. 如果子类定义的某个方法与父类定义的某个方法完全相同, 从父类继承的该方法就被override
    展开全文
  • java super this 关键字的区分使用

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

    1.关键字-this(this是什么)

    1. 在java中,this关键字比较难理解,但它的作用和它的单词意思很接近。
      1.1. 它在方法的内部使用,即这个方法所属对象的调用
      1.2. 它在构造器中内部使用,表示该构造器正在初始化的对象

    2. this表示当前对象,可以用来调用属性、方法和构造器

    3. 什么时候使用this关键字呢?
      3.1. 当方法内需要调用该方法的对象时,就用this

    4. 构造器中的使用(特殊)
      4.1. 可以在构造器通过“this(形参)”的方式来显示的调用本类中其他重载的指定的构造器。
      4.2. 在构造器内部必须声明在首行。
      4.3. 若一个类有n个构造器,那么最多有n-1构造器使用了this(形参);

    5. this小结
      5.1. 用来修饰方法、属性、构造器
      5.2. this理解成当前对象或者正在创建的对象 比如:this.name;this.show( );

    2. 在java类中使用super来调用父类中的指定操作:

    1. super可用于访问父类中定义的属性
    2. super可用于调用父类中定义的成员方法
    3. super可用于调用父类中定义的成员方法
    4. super可用于在子类构造方法中调用父类的构造器

    注意:

    1. 尤其是当子父类出现同名成员时,可用super进行区分
    2. super的追溯不仅限于直接父类super的追溯不仅限于直接父类
    3. super和this很像,this代表本类对象的引用,super代表父类的内存空间的标识super和this很像,this代表本类对象的引用,super代表父类的内存空间的标识

    3. this 和 super的区别

    1. 访问属性 this访问本类中的属性如果本类中没有此属性,则从父类中继续寻找 super 访问父类中的方法
    2. 调用方法 this访问本类中的方法 super 直接访问父类的方法
    3. 调用构造器 this调用本类构造器,必须放在构造器的首行 super调用父类构造器,必须放在子类构造器的首行
    4. 特殊 this表示当前对象 super无此概念

    4.子类实例化的过程

    • 由父类构造器先执行,在一层一层然后到子类

    5.demo

    public class Person {
    
    	private String name;
    	private int age;
    	int id;//身份证
    	...
    	public void eat() {
    		System.out.println("吃饭");
    	}
    }
    
    public class Student extends Person {
    	private String schoolName;
    	private int id;//学号
    	public Student(String schoolName, int id) {
    		super();//调用父类的构造器结构,加载父类的属性
    		this.schoolName = schoolName;
    		this.id = id;
    	}
    	
    	public void show() {
    		//默认this.id
    		System.out.println(this.id);		
    		System.out.println(super.id);
    	}
    }
    
    展开全文
  • super 和this关键字的作用 this是本身调用者对象 super代表父类对象 注意事项 super调用父类构造方法,必须出现在构造方法第一排 super和this不能同时调用构造方法 super只能出现在子类的方法或子类的构造方法中 ...

    super 和this关键字的作用

    this是本身调用者对象
    super代表父类对象

    注意事项

    1. super调用父类构造方法,必须出现在构造方法第一排
    2. super和this不能同时调用构造方法
    3. super只能出现在子类的方法或子类的构造方法中
    展开全文
  • JAVA—Super和this关键字

    2017-03-13 17:34:34
    关于Super和this关键字,我不做很多的描述,直接看例子: 运行结果: 看到这里,代码君是不是若有所感。其实,说白了,我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。而使用...

    关于Super和this关键字,我不做很多的描述,直接看例子:


    运行结果:


    看到这里,代码君是不是若有所感。其实,说白了,我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。而使用this关键字指向自己的引用。

    展开全文
  • super和this关键字

    2019-04-02 19:56:00
    this关键字: 栈内存堆内存方法区内存分析: 其中,new出来的即对象都在堆内存区; main方法先进栈; 方法区中 [[ super_class ]]是编译器生成,代码表现为extends; 栈中 Zi zi 保存的 地址值; 堆...
  • super和this关键字继承中构造方法的访问特点super关键字的三种用法this关键字的三种用法super和this关键字图解Java继承的三个特点 继承中构造方法的访问特点 继承关系中,父子类构造方法的访问特点: 1、子类构造...
  • 之前总是会对this和super搞得模模糊糊,今天就把它弄清楚。... this关键字——>指向自己的引用。 super(this)关键字都可以调用父类(子类)的属性方法。 实例: class Father{ void s...
  • java中的super和this关键字 super注意点: super调用父类的构造方法,必须在构造方法的第一个! super必须只能出现在子类的方法或者构造方法中! super this 不能同时调用构造方法! this注意点: 代表...
  • super和this关键字详解

    千次阅读 2020-10-12 17:12:09
    super关键字: ① java中提供了访问父类的成员变量,成员方法的关键字super super.成员变量 super.成员方法(【参数1,参数2***】) ② super关键字调用父类的构造方法 super(【参数1,参数2***】) 调用...
  • super和this关键字不能在static方法中使用,应为static创建的时候可能对象还没有创建,但是super和this关键字都是表示当前对象 super:可以 用于修饰属性、方法、构造器 1)属性: 当子类与父类有同名的属性...
  • day09_12_superthis关键字图解
  • super关键字和this关键字: this: 1.存储是当前对象的引用; 2.它始终指向的是本对象内部的成员(成员属性、成员方法、构造函数) super: 1.存储的父类对象的引用; 2.它指向父类对象中...
  • super关键字和this关键字 super关键字 /* super关键字的用法有三种: 1在子类的成员方法中,访问父类的成员变量。 2.在子类的成员方法中,访问父类的成员方法。 3.在子类的构造方法中,访问父类的构造方法。 */ ...
  • 开发工具与关键技术:MyEclipse 10,Java基础知识 作者:丁晓娟 撰写时间:2019-4-23 super关键字:代表是子类所属的父类中的内存空间引用,用来引用当前对象的...this关键字:代表是本类类型的对象引用,指向的...
  • super和this都是引用,指向同一个内存地址,不一样的是对这两个东西的解释,这要从类的内存布局说起。 一个class,如果继承于其他类,那么前面的内存部分是父类的东西,后面部分才是自己的,当你访问父类,只要能把...
  • 在设计类的时候,我们常常会遇到使用super和this关键字的情况。为了更好地使用这两种关键字,我在此做了一个总结。 一、super关键字 子类可以继承父类的非私有成员变量成员方法(不是以private关键字修饰的),...
  • 注意:使用super关键字和this关键字,均不能用在静态方法中,只能用在普通方法(实例方法)中。 访问属性: 示例: 父类 public class FatherClass{ public int age=18; } 子类 public c
  • 二、This(this关键字用来访问本类内容) this关键字的三种用法: (1)在本类的成员方法中,访问本类的成员变量 (2)在本类的成员方法中,访问本类的另一个成员方法 (3)在本类的构造方法中,访...
  • superthis关键字

    2020-07-05 22:34:56
    Super 关键字的使用 当需要在子类中调用父类的被重写方法,要使用 super 关键字。this 关键字 this指向调用该方法的对象,this位置不同,this作为对象...static修饰的方法不能使用this关键字 静态方法中调用普通方法
  • this关键字:代表当前对象的引用对象 (一) super 1.调用父类的构造方法。 1)子类的构造函数默认第一行会默认调用父类无参的构造函数,隐式语句。 2)如果显式调用父类构造函数,编译器自动添加的调用父类...
  • this关键字: "this",作为一个特殊的关键字,它的规则如下:  1、可以表示构造函数传递。this(a,b)表示调用另外一个构造函数。这里面的this就是一个特殊语法,不是变量,没有什么类型。  2、可以在一个类的...
  • 子类父类中都有某个数据就可以用到super关键字,例如,子类父类中都有name这个属性或者方法。如果要再子类中访问父类中的name属性,需要使用super super可以用在什么地方?super可以用在成员方法中,不能用在...
  • 学习Java之super 与 this 关键字 super 与 this 关键字,...this关键字可以出现在构造方法实例方法中,不能出现在静态方法中,这是因为静态方法可以用类名来调用,这时可能还没有任何对象诞生。 示例: 重写中的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 132,225
精华内容 52,890
关键字:

super和this关键字时