1. 定义一个Student类,并要求其他类在使用Student类的时候,最多只能创建10个Student类的对象,如何实现?
提示: 首先,要实现该功能,就不能让外部类直接使用
new Student(…)的方式来创建对象,如何不能让其他类new Student(…),
只需将Student类的所 有构造方法的,权限改为private即可。
接着,把创建对Student对象的工作,交给一个专门的方法去做(想想这个方法应该是怎样的方法)
public class day1101 {
}
class Student {
int id;
String name;
//定义Student的构造方法
private Student() {
}
//获取id
public int getId() {
return id;
}
//修改id
public void setId(int id) {
this.id = id;
}
//获取姓名
public String getName() {
return name;
}
//修改姓名
public void setName(String name) {
this.name = name;
}
//定义限制方法,返回一个student对象,必须为静态,否则无法调用
static int sum=0;
public static Student CreatStudent(){
Student student=null;
if (sum<=10){
student=new Student();
sum++;
}
return student;
}
}
思路: 首先,要实现该功能,就不能让外部类直接使用 new Student(…)的方式来创建对象故需将Student类的所有构造方法的权限改为private并且把创建对Student对象的工作,交给一个静态方法去做(静态方法不需要依靠于对象存在).
2. 将人,学生和老师(老师多了教工编号和讲课的行为)案例用继承实现, 并添加军人类,军人的特殊属性假设有部队编号,军人特有的行为假设有训练。
public class day1102 {
}
//定义人类这个共有属性
class Human{
int age;
String name;
public void eat(){
System.out.println(name+"eating");
}
public void sleep(){
System.out.println(name+"sleeping");
}
}
class Pupil extends Human{
int id;
public void study(){
System.out.println(id+name+"studying");
}
}
class Teacher extends Human{
int teacherId;
public void teach(){
System.out.println(teacherId+name+"teaching");
}
}
class Soldier extends Human{
int forceNumber;
public void train(){
System.out.println(forceNumber+name+"training");
}
}
思路:继承的引入-extends.