Java的super和this
Java的super和this
super
私有的东西无法被继承
使用super可以调用父类的属性或者方法
super.name;
super.print();
super();调用父类的无参构造器,必须在子类构造器的第一行。定义子类构造器的时候,它是默认存在的,隐藏代码。
super(“name”);调用父类的有参构造器
super的注意点:
- super调用父类的构造方法,必须在构造方法的第一个
- super必须只能出现在子类的方法或者构造方法中
- super和this不能同时调用构造方法
package com.cnblogs;
//本类用于实现
public class Application {
public static void main(String[] args) {
//实例化父类
Person person = new Person();
//实例化子类
Student stu = new Student();
stu.show();
//这是父类的方法
//1000000000
}
}
package com.cnblogs;
/*
person类
*/
public class Person {
//父类方法
public void in(){
System.out.println("这是父类的方法");
}
//父类属性
public int rmb = 10_0000_0000;
}
package com.cnblogs;
/*
student类
*/
public class Student extends Person{
public void show(){
super.in();
System.out.println(super.rmb);
}
}
this
this代表的就是"本类"
package com.cnblogs;
//本类用于实现
public class Application {
public static void main(String[] args) {
//实例化
Person person = new Person();
person.show();
//1
//2
}
}
package com.cnblogs;
/*
person类
*/
public class Person {
//本类属性
public int a = 1;
public int b = 2;
//本类方法
public void in(){
//this调用本类属性
System.out.println(this.a);
System.out.println(this.b);
}
//this调用本类方法
public void show(){
this.in();
}
}
使用this区分同名变量
package com.cnblogs;
//本类用于实现
public class Application {
public static void main(String[] args) {
//实例化
Person person = new Person("柒",21);
person.show();
//柒
//21
}
}
package com.cnblogs;
/*
person类
*/
public class Person {
//本类属性
public String name;
public int age;
//本类的构造方法
public Person(String name,int age) {
this.name = name;
this.age = age;
}
//展示方法
public void show(){
System.out.println(this.name);
System.out.println(this.age);
}
}
super和this的比较
- 代表的对象不同
- this:本身调用者这个对象
- super:代表父类对象的应用
- 前提
- this:没有继承也可以使用
- super:只能在继承条件才能使用
- 构造方法
- this():本类的构造
- super():父类的构造