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); } }