综合案例(用户博客管理系统):
Team8(抽象类)
定义一个抽象的"Role"类 有姓名 年龄 性别等成员变量
1. 要求尽可能隐藏所有变量(能够私有就私有,能够保护就不要公有)
再通过GetXXX()和SetXXX()方法对各变量进行读写。具有一个抽象的play()方法
该方法不返回任何值 同时至少定义两个构造方法。Role类中要体现出this的几种用法。
2. 从Role类派生出一个"Employee"类 该类具有Role类的所有成员
构造方法除外 并扩展 salary成员变量 同时增加一个静态成员变量“职工编号 ID ”。
同样要有至少两个构造方法 要体现出this和super的几种用法
还要求覆盖play()方法 并提供一个final sing()方法。
3. "Manager"类继承"Employee"类 有一个final成员变量"vehicle"
4. 在main()方法中制造Manager和Employee对象,并测试这些对象的方法
package yxl;
abstract class Role {
private String name;
private int age;
private String sex;
public Role(String name, int age, String sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
public Role(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public abstract void play();
}
class Employee extends Role {
private double salary;
private static String ID;
public Employee() {
super("伊卡",20,"男");
System.out.println("无参构造");
}
public Employee(String name,int age,String sex,double salary) {
super(name,age,sex);
this.salary = salary;
}
public void play() {
System.out.println(super.getName()+"在快乐的玩着奥德赛");
}
public final void sing() {
System.out.println(super.getName()+"吃着火锅唱着歌");
}
}
class Manager extends Employee {
public static final String vehicle = "Benz";
}
public class Control {
public static void main(String[] args) {
Role role = new Employee();
role.play();
Employee employee = (Employee) role;
employee.sing();
Manager manager = new Manager();
System.out.println(Manager.vehicle);
}
}
品尝饮料
1、建立一个Java抽象类Drink 应当 a、声明一个抽象方法taste() 该方法负责输出饮料的味道 b、声明int型常量来代表不同的饮料类型 咖啡、啤酒、牛奶 如 c、声明静态工厂方法getDrink(int drinkType) 根据传入的参数创建不同的饮料对象 并返回该对象 建议使用switch语句。该方法要求声明DrinkNotFoundException 当没有相对应的饮料类型时 抛出该异常。
2、建立Drink的具体子类 a、分别建立Drink的子类 Coffee 代表咖啡 Beer 代表啤酒 Milk 代表牛奶 ; b、实现taste()方法 要求在控制台打印各自的味道特征。
3、建立异常类DrinkNotFoundException a、继承Exception b、在Drink的 方 法getDrink(int drinkType)中 声 明 引 发DrinkNotFoundException异常 当传入的参数没有相对应的饮料类型时 抛出异常。 c、在使用getDrink方法的类中捕捉该异常。
4、建立Test测试类 测试以上内容的正确性 a、编写main方法 通过命令行传参的方式传入某种饮料的类型。 b、在main方法中 调用Drink类的getDrink方法 获得相应的饮料对象。注意捕获DrinkNotFoundException。 c、然后调用该饮料对象的taste()方法 输出该饮料的味道。
5、编译程序 并运行。
注意事项 1、仔细审题 把题目要求理解准确 2、请注意多态性的运用 3、请注意代码的书写、命名符合规范 应有适当的注释
package yxl;
import java.util.Scanner;
abstract class Drink {
abstract void taste();
int coffee,beer,milk;
static int getDrink(int drinkType) throws DrinkNotFoundException{
switch(drinkType) {
case 1: System.out.print("coffee:");
Coffee c=new Coffee();
c.taste();
break;
case 2: System.out.print("beer:");
Beer b=new Beer();
b.taste();
break;
case 3: System.out.print("milk:");
Milk m=new Milk();
m.taste();
break;
default: throw new DrinkNotFoundException();
}
}
class Fun extends Drink{
void taste() {}
}
class DrinkNotFoundException extends Exception{}
class Coffee{
void taste() {
System.out.println("haihaihai");
}
public void getDrink(int s) {
}
}
class Beer{
void taste() {
System.out.println("not bad");}
}
class Milk{
void taste() {
System.out.println("how sweet you are!");
}
}
public static void main(String[]args) {
Coffee c=new Coffee();
Beer b=new Beer();
Milk m=new Milk();
Fun f=new Fun();
Scanner sc=new Scanner(System.in);
try {
int s=sc.nextInt();
f.getDrink(s);
}catch(Exception e) {
System.out.println("mistake");
}
}
}