文章目录
第一题:(问答题)
1. 什么叫做多态,条件是什么?
- 多态:是指同一行为,具有多个不同表现形式。条件为:有继承或者实现关系;方法的重写(不重写无意义);父类引用指向子类对象
2. 使用多态特性,带来了什么样的好处?
- 方法的形参可以定位为共同的父类Person。
3. 使用多态特性,注意什么样的弊端?
- 如果子类有些独有的功能,此时多态的写法就无法访问子类独有功能了。
4. 关于多态的弊端我们如何解决?
- 将父类类型向子类类型向下强制转换。
5. 在A包中我要同时使用B包下的Student和C包下的Student类,该如何使用?
- 分别导入相应的包,创建对象时使用全类名。
6. final修饰类,修饰方法,修饰变量的特点?
- 修饰类:表示不能被继承;
- 修饰方法:不能被重写;
- 修饰变量-局部:只能赋值一次;
- 修饰变量-成员
- 显示初始化:在定义成员变量的时候立马赋值;
- 构造方法初始化:在构造方法中赋值一次
第二题:代码练习
1. 喂动物
需求:根据需求完成代码:
1.定义狗类
属性:
年龄,颜色
行为:
eat(String something)(something表示吃的东西)
看家lookHome方法(无参数)
2.定义猫类
属性:
年龄,颜色
行为:
eat(String something)方法(something表示吃的东西)
逮老鼠catchMouse方法(无参数)
3.定义Person类//饲养员
属性:
姓名,年龄
行为:
keepPet(Dog dog,String something)方法
功能:喂养宠物狗,something表示喂养的东西
行为:
keepPet(Cat cat,String something)方法
功能:喂养宠物猫,something表示喂养的东西
生成空参有参构造,set和get方法
4.定义测试类(完成以下打印效果):
keepPet(Dog dog,String somethind)方法打印内容如下:
年龄为30岁的老王养了一只黑颜色的2岁的狗
2岁的黑颜色的狗两只前腿死死的抱住骨头猛吃
keepPet(Cat cat,String somethind)方法打印内容如下:
年龄为25岁的老李养了一只灰颜色的3岁的猫
3岁的灰颜色的猫眯着眼睛侧着头吃鱼
5.思考:
1.Dog和Cat都是Animal的子类,以上案例中针对不同的动物,定义了不同的keepPet方法,过于繁琐,能否简化,并体会简化后的好处?
2.Dog和Cat虽然都是Animal的子类,但是都有其特有方法,能否想办法在keepPet中调用特有方法?
- Aninal
package cn.kox.homework01;
/**
* @ClassName: Animal
* @Author: Kox
* @Data: 2023/1/27
* @Sketch:
*/
public class Animal {
private int age;
private String color;
public Animal() {
}
public Animal(int age, String color) {
this.age = age;
this.color = color;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this