Java中this与super_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Java中this与super

Java中this与super

 2018/9/11 13:02:38  andrew7676  程序员俱乐部  我要评论(0)
  • 摘要:1.Java中thisthis代表对象本身,利用this可以表示当前对象、调用属性、调用方法。1.普通的直接引用2.形参与成员名字重名,用this来区分age是GetAge成员方法的形参,this.age是Person类的成员变量。this.output()调用方法。classPerson{privateintage=20;publicPerson(){this.output();}publicintgetAge(intage){this.age=age;returnthis.age;
  • 标签:Java
1. Java中this

class="java">
this代表对象本身,利用this可以表示当前对象、调用属性、调用方法。

1. 普通的直接引用

2. 形参与成员名字重名,用this来区分
    age是GetAge成员方法的形参,this.age是Person类的成员变量。this.output()调用方法。
    class Person {
    	private int age = 20;
    	public Person() {
    		this.output();
    	}
    	public int getAge(int age) {
    		this.age = age;
    		return this.age;
    	}
		public void output() {
		    System.out.println("初始化年龄:" + age);
		}
    }
    public class PersonTest {
    	public static void main(String[] args) {
    		Person andrew = new Person();
    		System.out.println("Andrew年龄:" + andrew.getAge(18));
    	}
    }
    初始化年龄:20
    Andrew年龄:18

3. 引用构造函数
    this(age)调用public Person(int age)构造函数
    class Person {
    	private int age;
    	private String name;
    	public Person(int age) {
    		this.age = age;
    	}
    	public Person(int age, String name) {
    		this(age);
    		this.name = name;
    	}
    }


2. Java中super

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

1. 普通的直接引用

2. 子类中的成员变量或方法与父类中的成员变量或方法同名
    这里调用了父类的成员变量和方法,如果没有super.getAge(),super.age的值默认为0
    class Person {
    	int age;
    	void getAge() {
    		age = 20;
    	}
    }
    class OnePerson extends Person {
    	int age;
    	void getAge() {
    		age = 18;
    		super.getAge(); // super调用父类中的方法
    		System.out.println("person年龄:" + super.age); // super调用父类中的成员变量
    		System.out.println("one person年龄:" + age);
    	}
    }
    public class PersonTest {
    	public static void main(String[] args) {
    		OnePerson onePerson = new OnePerson();
    		onePerson.getAge();
    	}
    }
    person年龄:20
    one person年龄:18

3. 引用构造函数
    使用super()和super(age, name)分别调用父类不同的构造方法
    class Person {
    	private int age;
    	private String name;
    	public Person() {}
    	public Person(int age, String name) {
    		this.age = age;
    		this.name = name;
    	}
    }
    class OnePerson extends Person {
    	private int age;
    	private String name;
    	public OnePerson() {
    		super();
    	}
    	public OnePerson(int age, String name) {
    		super(age, name);
    	}
    }


3. Java中this和super的对比总结

1. this():必须写在同一类构造方法的第一行,否则编译不通过
   super():必须写在子类构造方法的第一行,否则编译不通过

2. this(param):调用本类中另一种形成的构造函数,同时保证this是构造函数的第一条语句
   super(param):调用基类(父类)中的某一个构造函数,同时保证super是构造函数的第一条语句

3. this.param:如果函数的形参与类中的成员数据同名,这时需用this来指明成员变量名
   super.param/super.method():引用当前对象的直接父类中的成员变量或方法,用来区分父类子类中相同的成员变量和方法

4. this和super不能同时出现在一个构造函数里面,也不能出现两个this或者super

5. this()和super()都指的是对象,所以,不可以在static环境中使用

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

上一篇: 简单模拟一下HashMap的实现 下一篇: 没有下一篇了!
发表评论
用户名: 匿名