CG系统网址:http://211.81.175.89
【问题描述】
1、定义TableInfo类,该类具有形状shape(String类型)、高度height(int类型)、和所属工人owner(Worker类型)三个属性。为TableInfo类添加必要的构造方法和置取方法,并定义print方法,输出“This is zhangsan's table”
2、定义Worker类,该类具有名字name(String类型)、桌子table(TableInfo类型)两个属性。为Worker类添加必要的构造方法和置取方法,并定义print方法,输出“zhangsan has a square table”
3、定义测试类Test,main方法的代码如下:
【输入形式】
两个字符串,一个是桌子的形状,一个是工人的姓名
【输出形式】
两句话:
This is zhangsan's table
zhangsan has a square table
【样例输入】
please input table's shape:
square
please input worker's name:
zhangsan
【样例输出】
This is zhangsan's table
-----
zhangsan has a square table
【样例说明】
其中桌子的形状和工人的姓名都是输入的变量
程序难理解语句:
this.table.setOwner(this);
1.语句位于Worker的构造方法中
2.因此this就是当前Worker对象
3.调用当前对象的属性table对象的方法setOwner,参数this还是当前对象
4.意思是这个Worker对象的table的所有者是这个Worker
import java.util.Scanner;
class TableInfo{
private String shape;
private int height;
private Worker owner;
public TableInfo(String shape, int height) {
this.shape = shape;
this.height = height;
}
//用置取方法设置table对象的owner
public void setOwner(Worker owner) {
this.owner = owner;
}
//返回shape属性
public String display(){
return shape;
}
//输出
public void print(){
System.out.println("This is "+ owner.display() +"'s table");
}
}
class Worker{
private String name;
private TableInfo table;
//输出
public void print(){
System.out.println(name+" has a "+table.display()+" table");
}
//返回name属性
public String display(){
return name;
}
//构造方法
public Worker(String name, TableInfo table) {
this.name = name;
this.table = table;
this.table.setOwner(this);
}
}
public class two {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in) ;
System.out.println("please input table's shape:");
String shape = sc.next();
TableInfo table= new TableInfo(shape,80) ;
System.out.println("please input worker's name:");
String name = sc.next();
Worker worker = new Worker(name ,table) ;
table.print();
System.out.println("-----") ;
worker.print();
}
}