一. 编程题
请使用面向对象的思想,设计自定义类 Person 继承 Object 类,重写 toString 方法实现对
象信息输出。
运行效果如下图所示:
任务
思路分析
1、创建一个 Person 类继承自 Object,其中类的结构要求为:
属性:name(姓名)、age(年龄)、sex(性别)
方法:
▪ 创建带参(name、age、sex 为参数)构造方法
▪ 重写 toString 方法,输出信息格式为:姓名: 年龄: 性别:(其中,为对象对
应属性值)
2、创建测试类,在测试方法中,实例化 Person 对 象,并传入三个属性值。然后,分别
通过直接打印 Person 对象以及利用重写的 toString 方法,打印输出 2 行对象信息。
public class Person {private String name;private int age;private String sex;public Person(String name, int age, String sex) {this.name = name;this.age = age;this.sex = sex;}@Overridepublic String toString() {return "姓名:"+name+" "+"年龄:"+age+" "+"性别:"+sex;}}
public class Main {public static void test1(){Person person = new Person("李明",18,"男");System.out.println(person.toString());System.out.println(person.toString());}public static void main(String[] args){test1();}}
二.编程题
请使用面向对象的思想,实现出租车和家用轿车的信息描述。
程序运行参考效果图如下:
任务
要求:
1 、 根据出租车和家用轿车的共性,抽取父类 根据出租车和家用轿车的共性,抽取父类 Car
属性:车的颜色 color、车主姓名 userName
方法:
1带参构造函数(参数为 color 和 useName)
2创建无参无返回值得方法 use(描述内容为:我是机动车!)
3) 重写 equals 方法,比较两个对象是否相等(比较 color,userName)
2、子类 、子类 taxi
属性:所属公司( company)
方法:
1调用父类的构造方法,完成属性赋值
2创建不允许重写的 ride 方法,描述为:出租车是所属于在*公司的。
3写父类 use 描述为:出租车是提高市民生活质量的重要条件之一
4) 重写 toString 方法,输出的表现形式不同(输出 color,userName)
3、子类:私家车 、子类:私家车 HomeCar
属性:载客数(num)
方法:
1带参构造方法为所有属性赋值
2创建无参无返回值的 display 方法,表现为:拥有的颜色的私家车有座位
3重载要求(2)中的 display 方法(带参数 num),描述为:家用汽车大多有个座位
4) 要求私家车类不允许有子类
4、测试类,运行效果参照效果图: 、测试类,运行效果参照效果图:
1实例化 2 个父类对象,并传入两组相同的参数值
2类 use 方法
3调用父类重写的 equals 方法,测试两个对象是否相等
4实例化子类对象,并传入相关参数值
5类 ride 方法和 use 方法
6调用子类重写的 toString 方法,输出子类对象的信息
7实例化 HomeCar 类对象,并传入相关参数值
8) 调用子类的 display 和他的重载方法
public class Car {protected String color;//由于需要继承,所以用protected或者publicprotected String userName;public Car(String color, String userName) {this.color = color;this.userName = userName;}public void use(){System.out.println("我是机动车!");}@Override//equals方法重写自Object,因为Car继承自Object这个类public boolean equals(Object obj) {if(obj instanceof Car){Car car = (Car)obj;if(car.color.equals(color)&&car.userName.equals(userName)){return true;}}return false;}}
public class Taxi extends Car{String company;public Taxi(String color, String userName, String company) {super(color, userName);this.company = company;}@Overridepublic void use() {System.out.println("出租车是提高市民生活质量的重要条件之一");}public final void ride(){System.out.println(super.userName+"的出租车是所属于"+company+"公司的");}@Overridepublic String toString() {return "taxi的信息是:"+super.userName+"拥有一辆"+super.color+"出租车";}}
public final class HomeCar extends Car {private int num;public HomeCar(String color, String userName, int num) {super(color, userName);this.num = num;}public void display(){System.out.println(userName +"拥有的"+color+"颜色的私家车,有"+num+"座位");}public void display(int num){System.out.println("家用汽车大多数有"+num+"个座位");}}
public class Main {private static void test2(){Car car1 = new Car("黄色","麦克");Car car2 = new Car("黄色","麦克");car1.use();boolean bRet = car1.equals(car2);System.out.println("car1和car2的引用比较:"+bRet);System.out.println("==================================");Taxi taxi = new Taxi("黑色","尼古拉斯赵四","长生");taxi.ride();taxi.use();System.out.println(taxi.toString());System.out.println("====================================");HomeCar homeCar = new HomeCar("紫色","孙二娘",7);homeCar.display();homeCar.display(5);}public static void main(String[] args){test2();}}
三.编程题
应用继承和多态的思想,编写动物类,成员方法是动物叫声。写三个具体的类(猫、狗、
羊),它们都是动物类的子类,并重写父类的成员方法。编写测试类,随机产生三种具体
动物,调用叫声这个方法。
程序参考运行效果如图所示:
提示:
1. 定义一个父类 Animal 类 类
属性:kind(种类)
方法:创建带参(kind 为参数)构造方法
创建 cry():void 方法
2. 编写三个具体的子类 Cat 类、Dog 类、Sheep 类 类
分别重写父类中的 cry() 方法,输出信息分别为
Cat 类:小猫的叫声:喵喵喵~~
Dog 类:小狗的叫声:汪汪汪
Sheep 类:小羊的叫声:咩咩咩~~~
3. 编写测试类,首先生成长度为 5 的父类对象数组,然后通过循环依次向数组中存入
数据,现设定存储规则为: 数据,现设定存储规则为:
a) 每次随机产生一个 0~2 的正整数
b) 若数值为 0,则生成一个 Cat 类的对象,存入数组
c) 若数值为 1,则生成一个 Dog 类的对象,存入数组
d) 若数值为 2,则生成一个 Sheep 类的对象,存入数组
最后循环输出数组成员,并分别调用 cry() 方法。
随机数类的使用:
Random r = new Random(1);
int ran1 = r.nextInt(100);
public class Animal {protected String kind;public Animal(String kind) {//kind是为了实现多态,不同种类的动物this.kind = kind;}public void cry(){}}
public class Cat extends Animal {public Cat(String kind) {super(kind);}@Overridepublic void cry() {System.out.println("小"+kind+"的叫声:喵喵喵~~~");}}
public class Dog extends Animal {public Dog(String kind) {super(kind);}@Overridepublic void cry() {System.out.println("小"+kind+"的叫声:汪汪汪~~~ ");}}
public class Sheep extends Animal {public Sheep(String kind) {super(kind);}@Overridepublic void cry() {System.out.println("小"+kind+"的叫声:咩咩咩~~~ ");}}
public class Main {private static void test3() {// 长度5的父类对象数组Animal animal[] = new Animal[5];Random r = new Random(5);for (int i = 0; i <animal.length ; i++) {int ran1 = r.nextInt(3);//指定上限(不包括)switch(ran1){case 0:animal[i] = new Cat("猫");break;case 1:animal[i] = new Dog("狗");break;case 2:animal[i] = new Sheep("羊");break;}}for (int i = 0; i < animal.length ; i++) {animal[i].cry();}}public static void main(String[] args){test3();}}
四. 编程题
使用接口的知识, 定义接口 IFly,创建三个类 Plane 类、Bird 类、Balloon 类,分别重写接
口中的 fly( )方法,然后再测试类中进行调用。
程序运行参考效果如图所示:
提示:
1、创建接口 IFly( )
方法:创建抽象方法 fly() 方法
2、创建子类:Plane
方法:实现接口中的方法 fly( ),输出信息“飞机在天上飞”
创建子类:Bird
方法:实现接口中的方法 fly( ),输出信息“小鸟在天空翱翔””
创建子类:Balloon(气球)
方法:实现接口中的方法 fly( ),输出信息“气球飞上天空”
3、创建测试类,分别创建 Plane、Bird、Balloon 类的对象,调用 fly( ) 方法,输出效果
参考效果图
public interface IFly {void fly();}
public class Plane implements IFly {@Overridepublic void fly() {System.out.println("飞机在天上飞");}}
public class Balloon implements IFly {@Overridepublic void fly() {System.out.println("气球飞上天空");}}
public class Bird implements IFly {@Overridepublic void fly() {System.out.println("小鸟在天空翱翔");}}
public class Main {private static void test4(){Plane plane = new Plane();plane.fly();Bird bird = new Bird();bird.fly();Balloon balloon = new Balloon();balloon.fly();}public static void main(String[] args){test4();}}
五.编程题
分别通过成员内部类、匿名内部类完成接口 Ball,在测试类 BallTest 中的调用。
程序参考运行效果图如下:
提示:
1. 创建接口 IBall
包含抽象方法 play( )
2. 创建外部类 BallTest
定义方法 void playBall(Ball ball),调用接口中的 play( ) 方法
3. 分别通过成员内部类、匿名内部类完成接口实现
在 BallTest 中,创建成员内部类 Inner_m 实现接口 IBall,在类中重写 play( ) 方法,输出两
条信息,分别为”成员内部类:”和”打篮球”
在测试类 Test 中通过匿名内部类实现接口 IBall,并重写 play( )方法,输出两条信息,分别为
“**“,”匿名内部类:” 和 “打排球”
4. 创建测试类 Test,通过创建 BallTest 类及相关内部类实例,调用相关方法,依次完成
相关内部类测试。运行效果参见效果图
public interface IBall {void play();}
public class BallTest {public class Inner_m implements IBall{@Overridepublic void play() {System.out.println("打篮球");}}void playBall(IBall ball){ball.play();}}
public class Main {private static void test5(){BallTest ballTest = new BallTest();System.out.println("成员内部类:");ballTest.playBall(new BallTest().new Inner_m());System.out.println("*******************");System.out.println("匿名内部类:");ballTest.playBall(new IBall() {@Overridepublic void play() {System.out.println("打排球");}});}public static void main(String[] args){test4();}}
