一. 编程题
请使用面向对象的思想,设计自定义类 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;
}
@Override
public 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或者public
protected 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;
}
@Override
public void use() {
System.out.println("出租车是提高市民生活质量的重要条件之一");
}
public final void ride(){
System.out.println(super.userName+"的出租车是所属于"+company+"公司的");
}
@Override
public 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);
}
@Override
public void cry() {
System.out.println("小"+kind+"的叫声:喵喵喵~~~");
}
}
public class Dog extends Animal {
public Dog(String kind) {
super(kind);
}
@Override
public void cry() {
System.out.println("小"+kind+"的叫声:汪汪汪~~~ ");
}
}
public class Sheep extends Animal {
public Sheep(String kind) {
super(kind);
}
@Override
public 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 {
@Override
public void fly() {
System.out.println("飞机在天上飞");
}
}
public class Balloon implements IFly {
@Override
public void fly() {
System.out.println("气球飞上天空");
}
}
public class Bird implements IFly {
@Override
public 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{
@Override
public 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() {
@Override
public void play() {
System.out.println("打排球");
}
});
}
public static void main(String[] args){
test4();
}
}