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

可以为抽象类实例化:

package test1;

abstract class Person { // 抽象类 Person
	private String name; // 封装属性name
	private int age;// 封装属性age

	public Person(String name, int age) {// 构造函数 Person----方法名和类名一致
		this.name = name;// 为name赋值
		this.age = age;// 为age赋值
	}

	public String getName() {// 取得name属性的内容
		return name;
	}

	// public void setName(String name) {
	// this.name = name;
	// }

	public int getAge() {// 取得age属性的内容
		return age;
	}

	// public void setAge(int age) {
	// this.age = age;
	// }

	public void say() { // 定义普通方法
		System.out.println(this.getContent());
	}

	public abstract String getContent();// 说话的内容由子类决定
}

class Student extends Person {//定义S 类继承P 类
	private float score;    //封装一个属性

	public Student(String name, int age, float score) {
		super(name, age);  //调用父类的构造方法
		this.score = score;
	}

	public String getContent() {//覆写父类中的抽象方法
		return "学生信息--》姓名:" + super.getName() + ":年龄:" + super.getAge()
				+ ";成绩:" + this.score;
	}
}

class Worker extends Person {
	private float salary;

	public Worker(String name, int age, float salary) {
		super(name, age);
		this.salary = salary;
	}

	public String getContent() {
		return "工人信息--》姓名:" + super.getName() + ":年龄:" + super.getAge()
				+ ":工资:" + this.salary;
	}
}

public class AbstractCaseDemo02 {
	public static void main(String[] args) {
		Person per1 = null;
		Person per2 = null;
		per1 = new Student("张三", 20, 99.0f);
		per2 = new Worker("李四", 30, 3000.0f);
		per1.say();
		per2.say();
	}
}

  结果:

学生信息--》姓名:张三:年龄:20;成绩:99.0
工人信息--》姓名:李四:年龄:30:工资:3000.0

在Person类中就相当与定义了一个模版,在主方法中调用时,调用的就是普通方法,而子类只需要实现父类中的抽象方法,就可以取得一个具体的信息

转载于:https://www.cnblogs.com/bokun-wang/archive/2011/12/07/2278876.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值