super
super注意点:
-
super调用父类的构造方法,默认调用,必须在构造方法的第一个
-
super必须只能出现在子类的方法或构造方法中
-
super不能同时调用构造方法
和this的区别:
1.代表的对象不同
this:本身调用者这个对象
super:代表父类对象的应用
2.前提不同:
this:没有继承也可以使用
super:代表父类对象的应用
3.构造方法不同:
this():本类的构造
super():父类的构造
输出name:
Application:
package com.cheng.oop;
import com.cheng.oop.extend.Teacher;
import com.cheng.oop.extend.Student;
//一个项目应该只存在一个main方法
public class Application {
public static void main(String[] args) {
//实例化了一个对象
//使用了new关键字 本质是在调用构造器
Student student = new Student();
student.test("李宗丞");
}
}
Student:
package com.cheng.oop.extend;
public class Student extends Person{
private String name = "lzc";
public void test(String name){
System.out.println(super.name);//父类的name Dodo1
System.out.println(this.name);//本类的name lzc
System.out.println(name);//参数name
}
}
Person:
package com.cheng.oop.extend;
//在Java中,所有的类都默认直接或者间接继承Object类
public class Person {
protected String name = "Dodo1";
}
调用方法:
Application:
package com.cheng.oop;
import com.cheng.oop.extend.Teacher;
import com.cheng.oop.extend.Student;
//一个项目应该只存在一个main方法
public class Application {
public static void main(String[] args) {
//实例化了一个对象
//使用了new关键字 本质是在调用构造器
Student student = new Student();
//调用方法
student.test0();//输出Student Student Person
}
}
Student:
package com.cheng.oop.extend;
public class Student extends Person {
private String name = "lzc";//name
public void print() {
System.out.println("Student");//输出student
}
public void test0() {
print();//自己的print
this.print();//自己的print
super.print();//父类的print
}
}
Person:
package com.cheng.oop.extend;
//在Java中,所有的类都默认直接或者间接继承Object类
public class Person {
protected String name = "Dodo1";
public void print(){
System.out.println("Person");//输出person
}
}
NOTICE!!!!
私有的属性、方法无法被继承!
子类构造器默认调用父类的无参构造器,且放在构造器第一行;
当父类为有参构造时,子类必须显示写调用有参,不然默认调用无参构造器;
一个类重写有参构造时候,最好加上无参构造。

浙公网安备 33010602011771号