抽象类的实际应用demo

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);
    }
}
    
原文地址:https://www.cnblogs.com/yuanyuan2017/p/6561927.html