Java自学|this和super
1.概念
- this指的是当前对象
- super指的是父类
2.实例
同样,我们定义一个基类Person,有一个属性name:
//基类
public class Person {
String name = "Hello";
}
其次,定义一个子类Student,继承基类Person,并且子类也有一个属性是name:
//子类
public class Student extends Person{
String name = "World";
public void printName(){
System.out.println(this.name);
System.out.println(super.name);
}
}
我们在实例化Student类的时候,如果要访问属性name,那么我们所表达的是继承过来的name还是自己的name呢?(换句话说就是富二代自己挣了钱,又继承的他爸爸的钱,那么我们所说的钱是它本来就有的呢还是他爸爸的那部分呢?)
这里我们要做一下区分,用this和super来区分,this表示当前对象本来就有的(即富二代自己挣的钱),super表示继承而来的(即富二代的父亲的钱):
public class selfStudy {
public static void main(String[] args) {
Student student = new Student();
student.printName();
}
}
调用了student的printName方法,我们可以看到先输出了this.name,再输出了super.name:
同样this和super也可以对方法进行类似的操作
3.注意点
- super调用父类的构造方法,必须再构造方法的第一个
- super必须只能出现再子类的方法或者构造方法中
- super和tihis不能同时调用构造方法
- this本身代表本身这个对象,super代表父类对象的应用
- this,没有继承也可以用,super只能在继承时才能使用
- this()本类的构造,super()父类的构造
世上没有白走的路,每一步都算数!
跟上狂神说Java!
每个牛B的人背后都有段苦逼的岁月,只要像sb一样的坚持,终将牛B!