请说明this和super的区别?
【this关键字】
1.如果出现在普通方法中,或者实例方法中,则表示调用该方法对象的应用。
2.如果出现在构造方法中,则表示在本类中构造方法之间的互相调用。
【super关键字】
1.如果出现在构造方法中,表示子类调用父类的构造方法,实际上super还可以引用父类的变量或者是普通方法(后面再说)
super和this在构造方法中只能出现在第一行。
观察代码
一个java文件里可以存在多个类,但是java文件名必须和public修饰的类名字保持一致。
class A{
String name="张三";
public A (String name) {
name=name;
}
}
class B extends A{
Integer age=23;
public B(Integer age){
super("李四");
this.age=age;
}
}
class C extends B{
public C(){
super(30);
}
}
public class Hello {
public static void main(String[] args) {
C c =new C();
System.out.println("名字是:"+c.name+",年龄是"+c.age);
}
}
张三,30.
发现了输出的结果名字并不是李四,而是张三,出现这一问题的原因是在A类中构造方法中定义不标准,没有使用this关键字。此时就出现了【The assignment to variable name has no effect】表示变量name属性的指派无效。
总结:
1.this和super的区别
2.构造方法定义要规范,在构造方法中使用到属性的时候需要加上this