this和super的用法

来源:互联网 发布:java卸载失败 编辑:程序博客网 时间:2024/05/05 05:05

this的用法 :

package com.test;
/**
 * this的作用
 * 1 返回当前对象的引用
 * 2 在实例变量和局部变量同名的时候访问当前对象的实例变量
 * 3 在类的构造方法中调用这个类的其他的构造方法
 * 4 不能在静态方法或静态代码块中使用this
 */
public class Person {
 private String name;

 private String address;

 private int age;

 public Person(String name,String address){
  this.name = name;//this在实例变量和局部变量同名的时候访问当前对象的实例变量
  this.address = address;
 }
 
 public Person(String name, String address, int age) {
  
  this(name,address);//在类的构造方法中调用这个类的其他的构造方法 需要放在句首
  this.age = age;
 }

 public Person getPerson(){
  return this;//this返回当前对象的引用
 }
}

 

super的用法:

package com.test;

/**
 * super的用法 1 调用被子类隐藏的父类的实例变量
 * 2 调用父类的方法
 * 3 在子类里面调用父类的构造方法 如果不显示的调用则默认的调用父类无参的构造方法如果父类没有无参的构造方法这程序报错
 */
class Base {
 String property;

 public Base(String property) {
  this.property = property;
 }

 public void display() {
  System.out.println(this.property);
 }
}

class Sub extends Base {

 String property;//子类的实例变量隐藏了从父类继承过来的实例变量

 public Sub(String property) {
  // 子类里必须显示的调用父类的构造方法 因为父类没有默认的无参的构造方法 必须放句首super语句
  super("a");// 在子类里面调用父类的构造方法 如果不显示的调用则默认的调用父类无参的构造方法 如果父类没有无参的构造方法这程序报错
  this.property = property;
 }

 public void display() {
  System.out.println(super.property);// 调用被子类隐藏的父类的实例变量
  super.display();// 调用被子类隐藏的父类的方法
  System.out.println(this.property);
 }
}

public class SuperTest {
 public static void main(String[] args) {
  Sub sub = new Sub("b");
  sub.display();
 }
}

原创粉丝点击