多态问题:成员函数,编译看左边,运行看右边,都是拿左边的东西编译成功在右边的东西运行
abstract class Teacher{
private String name;
private int age;
public Teacher(){}
public Teacher(String name,int age){
this.name=name;
this.age=age;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public abstract void teacher();
}
//基础班老师讲课
class BasicTeacher extends Teacher{
public BasicTeacher(){}
public BasicTeacher(String name,int age){
super(name,age);
}
public void teacher(){
System.out.println("基础班老师讲解Javase");
}
}
//就业班老师讲课
class WorkTeacher extends Teacher{
public WorkTeacher(){}
public WorkTeacher(String name,int age){
super(name,age);
}
public void teacher(){
System.out.println("就业班老师讲解Javaee");
}
}
public class AbstractTest {
public static void main(String[] args){
//多态版测试,具体版太简单就不写了
//基础班老师
Teacher t=new BasicTeacher();
t.setAge(20);
t.setName("刘意");
System.out.println(t.getName()+"------"+t.getAge());
t.teacher(); //基础班老师讲解Javase
System.out.println("----------------------");
t=new BasicTeacher("刘意",20);
//这里可以直接使用上面的BasicTeacher new出来的Teacher 对象
//同一个对象,new的2种方式罢了
System.out.println(t.getName()+"------"+t.getAge());
t.teacher(); //基础班老师讲解Javase
System.out.println("------------------------------------------------------------");
//就业班老师
t=new WorkTeacher();
//与Teacher t=new WorkTeacher();相同or不同,我的理解好像是相同的,只是不能重复定义,所以前面不能加Teacher ;
//同一个对象,在不同类中的使用,多态
t.setAge(18);
t.setName("林青霞");
System.out.println(t.getName()+"------"+t.getAge());
t.teacher(); //就业班老师讲解Javaee
System.out.println("----------------------");
t=new WorkTeacher("林青霞",18);
System.out.println(t.getName()+"------"+t.getAge());
t.teacher(); //就业班老师讲解Javaee
}
}
程序运行结果为:
刘意------20
基础班老师讲解Javase
刘意------20
基础班老师讲解Javase
林青霞------18
就业班老师讲解Javaee
林青霞------18
就业班老师讲解Javaee
技巧:
多态问题:成员函数,编译看左边,运行看右边,都是拿左边的东西编译成功在右边的东西运行
特殊情况当子类有特有的东西而父类没有的时候,我们编译的时候就会报错
所以当子类都特殊东西的时候,我们就用子类来测试