package chouxiangleidemo;
/*
* 写一个抽象类的实际应用demo,人分为学生和工人,学生和工人都可以说话,但是呢说话的内容不一样
* 这个 我们就可以把人作为一个抽象类,学生和工人作为子类去继承人
*/
public class yingyongdemo {
public static void main(String[] args) {
//student s = new student("wangwu",89,78.9f);
//s.say();
//worker w = new worker("liuwei",54,990);
//w.say();
//上面的是实例化子类分别去调用子类的方法获得的,下方我通过对象转型来实现
person p1 = new student("wangsi",89,77f);
p1.say();
person p2 = new worker("wangyi",86,99900);
p2.say();
}
}
//写抽象类:人
abstract class person{
//写一些人的属性,姓名,年龄,并进行封装
private String name;
private int age;
public void setname(String name){
this.name =name;
}
public String getname(){
return name;
}
public void setage(int age){
this.age =age;
}
public int getage(){
return age;
}
//写一个构造方法为属性赋值,构造方法不能有返回值类型
public person(String name,int age){
this.name = name;
this.age = age;
}
// 写一个抽象方法:说话,让子类是复写说话的内容
public abstract void say();
}
//写一个学生类去继承人
class student extends person{
//定义一个学生自己的属性
private float fenshu;
//写一个student自己的构造方法
public student(String name,int age,float fenshu){
super(name,age);
this.fenshu = fenshu;
}
//去实现父类中的say方法
public void say(){
System.out.println("student :"+super.getname()+super.getage()+this.fenshu);
}
}
//写一个工人的类去继承人
class worker extends person{
//写一个工人自己的属性
private int gongzi;
//写一个工人自己的构造方法
public worker(String name,int age, int gongzi){
super(name,age);
this.gongzi = gongzi;
}
//去实现父类中的say方法
public void say(){
System.out.println("worker: "+super.getage()+super.getname()+this.gongzi);
}
}