题目内容:在一个公寓里,小红是一个学生,另外还有一个建筑工人,平时帮助别人换锁,有一个是医生。请用oop的思想用 代码实现小红家的情况!
Java参考答案:( 为了方便,我把所有的类都放在一个文件里面了)
public class Test{
public static void main(String[] args){
House h=new House();
h.setStu(new Student("0001","小红",'女'));
h.setDoc(new Doctor("丽丽",'女'));
h.list(h.getStu());
h.list(h.getDoc());
Lock l=new Builder("老明",'男');
h.list(l);
}
}
class Person{
private String name;
private char sex;
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void work(){
System.out.println("努力工作!");
}
public Person(String name,char sex){
this.name=name;
this.sex=sex;
}
}
class Student extends Person{
private String sid;
public void setSid(String sid){
this.sid=sid;
}
public String getSid(){
return sid;
}
public void work(){ //使用继承
System.out.println(getName()+"学习很用功!");
}
public Student(String sid,String name,char sex){
super(name,sex);
this.sid=sid;
}
}
interface Lock{
void job();
}
class Builder extends Person implements Lock{ //使用继承,和实现接口
public void work(){
System.out.println(getName()+"是建筑工人,工作挺累的!");
}
public void job(){
System.out.println(getName()+"是开锁专家,为人民服务!");
}
public Builder(String name,char sex){
super(name,sex);
}
}
class Doctor extends Person{ //使用继承
public void work(){
System.out.println(getName()+"是一个医生,人们的白衣天使!");
}
public Doctor(String name,char sex){
super(name,sex);
}
}
class House{ //使用合成
private Student stu;
private Builder bui;
private Doctor doc;
public void list(Person per){
per.work();
}
public void list(Lock lock){
lock.job();
}
public void setStu(Student stu){
this.stu=stu;
}
public Student getStu(){
return stu;
}
public void setBui(Builder bui){
this.bui=bui;
}
public Builder getBui(){
return bui;
}
public void setDoc(Doctor doc){
this.doc=doc;
}
public Doctor getDoc(){
return doc;
}
}
在C#中也是大同小异,因我我只装了jdk,没有装vs 所以在这里我就不演示C#代码了。
为了方便,我把所有的类都放在一个文件里面了