1(Person.java):定义Person类,变量name,ID。 用户不能直接修改这些变量,可以通过getName,setName方法获取Name 属性和设置Name属性,ID也是如上。 2(American.java, Chinese .java):定义Person类的eat()方法。定义American类和Chinese类,分别继承Person 类,并重写Person 类的eat方法。American的eat方法输出“我用刀叉吃西餐”;Chinese 的eat方法输出”我用筷子吃中餐”。并用测试类调用测试。 3(Auto.java, Bus.java):设计一个汽车类Auto,有速度属性speed,启动start、加速speedup和停止stop方法,从Auto类派生一个子类Bus,以表示公共汽车,且Bus增加一个表示乘客数的属性passenger,另外添连个表示乘客上车和下车的方法getOn和getOff。 4: 一、P88的实验2: 编写一个Java应用程序,模拟学校和教师的关系,即学校将教师作为自己的一个成员变量。具体要求如下。 (1)有三个源文件: School.java、Teacher.java 和MainClassjava, 其中Teacherjava中的Teacher类负责创建“教师"对象。Schooljava中的School 类负责创建“学校”对象,School有类型是Teacher、名字是mathTeacher和music Teacher的成员变量.School用类中的void setTeacher(Teacher t1,Teachert2)方法将参数tl和t2的值赋值给mathTeacher和musicTeacher。MainClass.java 中含有主类。 (2)在主类MainClass的main方法中首先使用Teacher类创建2个对象: zhang 和wang,然后使用School类创建一个"实验中学"对象, "实验中学"对象调用setTeacher(Teacher t1l,Teacher t2)方法将zhang和wang的引用传递给"实验中学"对象的mathTeacher和musicTeacher。 二、p89实验三: 编写程序模拟两个村庄共同拥有一片森林。编写一个Village类,该类有一个静态的int型成员变量treeAmount用于模拟森林中树木的数量。在主类MainClass的main方法中创建两个村庄,一个村庄改变了treeAmount的值,另一个村庄查看treeAmount的值。 三、118实验1: 编写程序模拟猫和狗。程序中有4个类: Animal、Dog. Cat和主类MainClass类。要求如下。 (1 ) Animal类有权限是protected的String型成员变量name,以及public void cryO、public voidshowName(方法。 (2) Dog类是Animal的子类,新增public void swimming0方法,重写父类的public void cry()方法。 (3) Cat类是Animal的子类,新增public void climbUpTree(方法,重写父类的public void cry()方法。 (4)在主类MainClass中使用Dog和Cat类创建对象。
|
Person.java: public class Person { private String Name;//私有名字 private String ID;//私有ID Person(){//把默认的构造函数写出来,有时候可能会用到 } Person(String Name,String ID){//构造函数传name和ID的参数 this.Name=Name; this.ID=ID; } public String getName() {//获取对象的名字的方法 return Name; } void setName(String Name) {//设置对象的名字的方法 this.Name=Name; } public String getID() {//获取对象的ID的方法 return ID; } void setID(String ID) {//设置对象的ID的方法 this.ID=ID; } } Demo.java: public class Demo { public static void main() { Person person = new Person("黄湘平","3171911134");//声明对象,并调用传参的构造函数进行初始化 System.out.println(person.getName());//输出刚才初始化的内容 System.out.println(person.getID()); person.setName("雷冲");//调用对象的设置名字 person.setID("3171911138");//调用对象的设置ID System.out.println(person.getName());//通过输出查看刚才修改的结果 System.out.println(person.getID()); } } 运行结果:
Person.java: public class Person { public void eat() { System.out.println("我用手吃饭"); } } American.java: public class American extends Person{ public void eat() { System.out.println("我用刀叉吃西餐"); } } Chinese.java: public class Chinese extends Person{ public void eat() { System.out.println("我用筷子吃中餐"); } } Demo.java: public class Demo { public static void main(String[] args) { Person people = new American();//上转型的美国人对象 people.eat();//调用美国人的吃的方法 people = new Chinese();//上转型的中国人对象 people.eat();//调用中国人的吃的方法 } } 运行结果:
3.源程序代码(三个类,Auto.java,Bus.java,Demo.java(结果测试类)): Auto.java: public class Auto { public double speed;//加速度 public void start() {//启动的方法 System.out.println("启动"); } public void upspeed() {//加速的方法 System.out.println("加速"); } public void stop() {//停止的方法 System.out.println("停止"); } } Bus.java: public class Bus extends Auto{ public int passenger;//子类新增的变量 Bus(){//把默认的构造函数写出来,因为下面有传参的构造函数,有时候可能需要默认的构造函数 } Bus(int num){//传参的构造函数,对子类新增的变量进行初始化 this.passenger=num; } public void getOn() {//乘客乘车的方法 System.out.println("乘客上车"); } public void getOff() {//乘客下车的方法 System.out.println("乘客下车"); } } Demo.java: public class Demo { public static void main(String[] args) { Auto son = new Bus(50);//bus的上转型声明并初始化 son.start();//启动 son.upspeed();//加速 son.stop();//停止 Bus bus = new Bus(25);//子类bus声明对象,并初始化 bus.getOn();//测试bus新增的方法 bus.getOff(); } } 运行结果:
4.1.源程序代码(三个类,School.java,Teacher.java,MainClass.java(结果测试类)): School.java: public class School { Teacher mathTeacher;//老师类的类型变量,数学老师 Teacher musicTeacher;//音乐老师 public void setTeacher(Teacher t1,Teacher t2) {//给学校类设置老师的方法 this.mathTeacher=t1; this.musicTeacher=t2; } public void getTeacher() {//获取该老师们的名字的方法 System.out.println("数学老师:"+this.mathTeacher.name); System.out.println("音乐老师:"+this.musicTeacher.name); } } Teacher.java: public class Teacher { public String name;//老师类的名字变量 Teacher(String name){//构造函数,进行初始化老师类的名字 this.name = name; } } MainClass.java: public class MainClass { public static void main(String args[]) { Teacher zhang = new Teacher("zhangsan");//声明一个对象老师叫zhang Teacher wang = new Teacher("wangwu");//声明一个对象老师叫wang School 实验中学 = new School();//声明一个对象学校 实验中学.setTeacher(zhang, wang);//把两个老师传进这个学校 实验中学.getTeacher();//查询这个学校的老师 } } 运行结果:
4.2 源程序代码 Village.java: public class Village { public static int treeAmount;//森林的数量的变量是静态的,共同拥有的变量 public int peoplenum;//村庄的人口数量的变量 public String name;//村庄的名字 Village(String name,int peoplenum){//构造函数的传参,并且进行初始化对象的变量 this.name = name; this.peoplenum = peoplenum; } public void treePlant(int num) {//村庄种植树的数量的方法 treeAmount += num; //种植说明森林的树的数量增加了 System.out.println(name+"种植"+num+"棵树");//输出种了多少 } public void treeFell(int num) {//村庄砍伐的树的数量的方法 if(treeAmount-num>=0) {//如果数量够砍就直接输出要砍的数量 System.out.println(name+"砍伐"+num+"棵树"); treeAmount -= num;//减掉相应的数量 }else {//如果不够砍就把剩下的全砍了,并把森林数量变为0 System.out.println(name+"还能砍伐"+treeAmount+"棵树"); treeAmount = 0;//森林的树的数量为0了 } } public void addPeople(int num) {//给村庄添加人口的方法 this.peoplenum+=num;//累加 System.out.println(name+"添加了"+num+"人");//输出添加了多少人 } public void setTreeAmount(int num) {//初始化森林的数量,因为该变量是静态的,要通过方法进行初始化 treeAmount = num; } public int treeSee() {//查看森林的树的数量,因为是这个变量是静态的,所以要用方法去查看 return treeAmount; } } MainClass.java: public class MainClass { public static void main(String[] args) { Village zhaozhuang = new Village("赵庄",200);//初始化两个村庄的名字和人口数量 Village majiazhuang = new Village("马家庄",500); System.out.println(zhaozhuang.name+"人口数量:"+zhaozhuang.peoplenum);//输出初始化的两个村庄的结果 System.out.println(majiazhuang.name+"人口数量:"+majiazhuang.peoplenum); zhaozhuang.setTreeAmount(1000);//初始化两个村庄拥有的森林的树的数量 System.out.println("两庄的森林的树的数量:"+majiazhuang.treeSee());//通过输出查看初始化的结果 zhaozhuang.treePlant(100);//赵庄种了100棵树 majiazhuang.treePlant(200);//马家庄种了200棵树 zhaozhuang.treeFell(250);//赵庄砍了250棵树 majiazhuang.treeFell(100);//马家庄砍了100棵树 System.out.println("两庄的森林的树的数量:"+majiazhuang.treeSee());//多次砍树和种树,再次查看森林的树的数量,验证结果 zhaozhuang.addPeople(500);//赵庄添加了500人 majiazhuang.addPeople(123);//马家庄添加了123人 System.out.println(zhaozhuang.name+"人口数量:"+zhaozhuang.peoplenum);//查看添加人口数量之后的两个村庄的人口数量 System.out.println(majiazhuang.name+"人口数量:"+majiazhuang.peoplenum); } } 运行结果:
4.3 源程序代码(四个类,Animal.java,Cat.java,Dog.java,MainClass.java(结果测试类)): Animal.java: public class Animal { protected String name; Animal(String name){//构造函数的传参,并初始化动物的名字 this.name = name; } public void cry() {//动物叫声的方法 System.out.println("咆哮。。咆哮。。咆哮。。"); } public void showName() {//输出动物的名字的方法 System.out.println(this.name); } } Cat.java: public class Cat extends Animal{ Cat(String name){//子类的猫的构造函数,通过父类的构造函数进行使用就可以了 super(name); } public void cry() {//父类的叫声的重写的方法 System.out.println("喵。。喵。。喵。。"); } public void climbUpTree() {//子类新增的爬树方法 System.out.println(name+"在爬树"); } } Dog.java: public class Dog extends Animal{ Dog(String name){//子类的猫的构造函数,通过父类的构造函数进行使用就可以了 super(name); } public void cry() {//父类的叫声的重写的方法 System.out.println("汪。。汪。。汪。。"); } public void swimming() {子类新增的游泳方法 System.out.println(name+"在游泳"); } } MainClass.java: public class MainClass { public static void main(String[] args) { Dog dog = new Dog("小黄狗");//声明一个狗类型的对象,并初始化名字 Cat cat = new Cat("小花猫");//声明一个猫类型的对象,并初始化名字 dog.showName();//调用狗的展示名字的方法 dog.cry();//调用狗的叫声的方法 dog.swimming();//调用狗的游泳方法
cat.showName();调用猫的展示名字的方法 cat.cry();//调用猫的叫声的方法 cat.climbUpTree();//调用猫的爬树方法 } } 运行结果:
|
|
第一题: Person(String Name,String ID){//构造函数传name和ID的参数 this.Name=Name; this.ID=ID; } public String getName() {//获取对象的名字的方法 return Name; } void setName(String Name) {//设置对象的名字的方法 this.Name=Name; } public String getID() {//获取对象的ID的方法 return ID; } void setID(String ID) {//设置对象的ID的方法 this.ID=ID; } 第二题: public class Person { public void eat() { System.out.println("我用手吃饭"); } } public class American extends Person{ public void eat() { System.out.println("我用刀叉吃西餐"); } } public class Chinese extends Person{ public void eat() { System.out.println("我用筷子吃中餐"); } } 第三题: public void start() {//启动的方法 System.out.println("启动"); } public void upspeed() {//加速的方法 System.out.println("加速"); } public void stop() {//停止的方法 System.out.println("停止"); } Bus(int num){//传参的构造函数,对子类新增的变量进行初始化 this.passenger=num; } public void getOn() {//乘客乘车的方法 System.out.println("乘客上车"); } public void getOff() {//乘客下车的方法 System.out.println("乘客下车"); } 第四题的(1): public void setTeacher(Teacher t1,Teacher t2) {//给学校类设置老师的方法 this.mathTeacher=t1; this.musicTeacher=t2; } public void getTeacher() {//获取该老师们的名字的方法 System.out.println("数学老师:"+this.mathTeacher.name); System.out.println("音乐老师:"+this.musicTeacher.name); } 第四题的(2): Village(String name,int peoplenum){//构造函数的传参,并且进行初始化对象的变量 this.name = name; this.peoplenum = peoplenum; } public void treePlant(int num) {//村庄种植树的数量的方法 treeAmount += num; //种植说明森林的树的数量增加了 System.out.println(name+"种植"+num+"棵树");//输出种了多少 } public void treeFell(int num) {//村庄砍伐的树的数量的方法 if(treeAmount-num>=0) {//如果数量够砍就直接输出要砍的数量 System.out.println(name+"砍伐"+num+"棵树"); treeAmount -= num;//减掉相应的数量 }else {//如果不够砍就把剩下的全砍了,并把森林数量变为0 System.out.println(name+"还能砍伐"+treeAmount+"棵树"); treeAmount = 0;//森林的树的数量为0了 } } public void addPeople(int num) {//给村庄添加人口的方法 this.peoplenum+=num;//累加 System.out.println(name+"添加了"+num+"人");//输出添加了多少人 } public void setTreeAmount(int num) {//初始化森林的数量,因为该变量是静态的,要通过方法进行初始化 treeAmount = num; } public int treeSee() {//查看森林的树的数量,因为是这个变量是静态的,所以要用方法去查看 return treeAmount; } 第四题的(3): public class Dog extends Animal{ Dog(String name){//子类的猫的构造函数,通过父类的构造函数进行使用就可以了 super(name); } public void cry() {//父类的叫声的重写的方法 System.out.println("汪。。汪。。汪。。"); } public void swimming() {子类新增的游泳方法 System.out.println(name+"在游泳"); } } public class Cat extends Animal{ Cat(String name){//子类的猫的构造函数,通过父类的构造函数进行使用就可以了 super(name); } public void cry() {//父类的叫声的重写的方法 System.out.println("喵。。喵。。喵。。"); } public void climbUpTree() {//子类新增的爬树方法 System.out.println(name+"在爬树"); } } |