抽象类的实际应用--模板设计

本文通过一个具体的例子介绍如何使用抽象类实现模板设计模式。该模式允许子类定义一个算法的部分步骤,而将共同部分定义在抽象类中。文中详细展示了如何创建一个抽象类Person及其实现该抽象类的两个子类:Student和Worker。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*抽象类是接口的实际应用-----模板设计
  思路:假设人分学生,工人,学生和工人都可以说话,但是说话的内容不一样。
        也就是说说话这个具体功能由学生和工人自己决定。
*/


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


}
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值