1,新建Application类,作为程序的入口
package oop.demo05;
//继承
public class Application {
public static void main(String[] args) {
/*
先执行 父类的无参、在执行了类的无参
Person 无参执行了
Student 无参执行了
*/
Student s1 = new Student();
s1.say(); //说了一句话!!
// System.out.println(s1.money);//1000000000 加了私有 修饰后,这个语句报错
System.out.println("s1.getMoney():" + s1.getMoney()); //s1.getMoney():1000000000
Student s2 = new Student();
s2.Test("向向");
s2.Test2();
}
}
2,新建Person类
package oop.demo05;
/*
继承
*/
public class Person {
// 无参构造
public Person() {
System.out.println("Person 无参执行了");
}
public void say(){
System.out.println("说了一句话!!");
}
public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
private int money=10_0000_0000;
/*
public 公共的
private 私有的
default 默认的
protected 受保护的
*/
protected String name="小小向";
public void print(){
System.out.println("Person");
}
//私有和不能被继承
private void print2(){
System.out.println("Person");
}
}
3,新建Student类
package oop.demo05;
public class Student extends Person {
public Student() {
// 隐藏代码,调用父类的无参构造
super();
System.out.println("Student 无参执行了");
}
private String name="小玉";
public void Test(String name){
System.out.println("name:"+name);//向向
System.out.println("this.name:"+this.name);//小玉
System.out.println("super.name:"+super.name); // 小小向 ------------调父类;
}
public void print(){
System.out.println("Student");
}
public void Test2(){
print();//Student
this.print();//Student
super.print();//Person
// super.print2(); //不能调用,私有的
}
}
4,新建Teacher类
package oop.demo05;
public class Teacher extends Person{
}
5,super使用
## super注意点
1,super调用的是父类的构造方法,必须在构造方法的第一个
2,super必须只能出现在子类的方法或者构造方法中
2,super和this不能同时调用构造方法
##vs this:
代表的对象不同:
this 本身这调用者是这个对象
super 代表父类对象的引用
前提
this 没有继承也可以使用
super 只有在继承条件下才可以使用
构造方法
this() 调用的是本类的构造
super() 调用的是父类的构造
6,运行结果