/*抽象类是接口的实际应用-----模板设计
思路:假设人分学生,工人,学生和工人都可以说话,但是说话的内容不一样。
也就是说说话这个具体功能由学生和工人自己决定。
*/
abstract class Person{ //定义Person类
private int age;
private String name;
public Person(int age,String name){ //父类构造方法
this.age=age;
this.name=name;
}
public int getAge(){ //取得年龄
return this.age;
}
public String getName(){ //取得姓名
return this.name;
}
public void say(){ //人说话是一个具体的功能
System.out.println(this.getContent()); //输出内容
}
public abstract String getContent(); //定义一个抽象类,说话的内容由子类决定
};
class Student extends Person{ //学生子类
private float score;
public Student(int age,String name,float score){ //子类构造方法
super(age,name); //调用父类中的构造方法
this.score=score;
}
public String getContent(){ //覆写抽象方法
return "学生信息:\n"+"姓名:"+super.getName()+"\n年龄:"+super.getAge()+"\n分数:"+this.getScore();
}
public float getScore(){ //取得分数
return this.score;
}
};
class Worker extends Person{ //工人子类
private float salary;
public Worker(int age,String name,float salary){
super(age,name); //调用父类中的构造方法
this.salary=salary;
}
public float getSalary(){
return this.salary;
}
public String getContent(){ //覆写父类中的抽象方法
return "工人信息:\n"+"姓名:"+super.getName()+"\n年龄:"+super.getAge()+"\n工资:"+this.getSalary();
}
};
public class AbstractCase01{
public static void main(String args[]){
Person per1=new Student(11,"lee",33.0f); //向下转换
Person per2=new Worker(11,"Lee",88.0f);
//Student stu=(Student) per1; //向下转换
per1.say();
per2.say();
}
};
思路:假设人分学生,工人,学生和工人都可以说话,但是说话的内容不一样。
也就是说说话这个具体功能由学生和工人自己决定。
*/
abstract class Person{ //定义Person类
private int age;
private String name;
public Person(int age,String name){ //父类构造方法
this.age=age;
this.name=name;
}
public int getAge(){ //取得年龄
return this.age;
}
public String getName(){ //取得姓名
return this.name;
}
public void say(){ //人说话是一个具体的功能
System.out.println(this.getContent()); //输出内容
}
public abstract String getContent(); //定义一个抽象类,说话的内容由子类决定
};
class Student extends Person{ //学生子类
private float score;
public Student(int age,String name,float score){ //子类构造方法
super(age,name); //调用父类中的构造方法
this.score=score;
}
public String getContent(){ //覆写抽象方法
return "学生信息:\n"+"姓名:"+super.getName()+"\n年龄:"+super.getAge()+"\n分数:"+this.getScore();
}
public float getScore(){ //取得分数
return this.score;
}
};
class Worker extends Person{ //工人子类
private float salary;
public Worker(int age,String name,float salary){
super(age,name); //调用父类中的构造方法
this.salary=salary;
}
public float getSalary(){
return this.salary;
}
public String getContent(){ //覆写父类中的抽象方法
return "工人信息:\n"+"姓名:"+super.getName()+"\n年龄:"+super.getAge()+"\n工资:"+this.getSalary();
}
};
public class AbstractCase01{
public static void main(String args[]){
Person per1=new Student(11,"lee",33.0f); //向下转换
Person per2=new Worker(11,"Lee",88.0f);
//Student stu=(Student) per1; //向下转换
per1.say();
per2.say();
}
};