命名要求:
1. 类名,接口名,枚举名,注解名使用大驼峰
2. 变量名,方法名,包名均使用小驼峰
3. 常量名全大写,多个单词下划线分割
4. 名字要见名知意,如果不知道对应的英文,可以使用拼音代替。不可使用无意义字符
代码规范:
格式要良好,使用IDEA格式化缩进(快捷键:Ctrl+Alt+L)
答题规范:
1. 每道题完整代码请贴入对应题目中的代码区。
2. 如果有运行结果的,请把代码运行结果放到文档中
【多态】
题目1
有以下类定义:
动物类
属性:名称、年龄、性别
行为:吃
猫类继承动物
行为:
吃(重写)
捉老鼠
狗类继承动物
行为:
吃(重写)
看家
要求
请按要求定义上述类,并用多态的格式测试调用“吃饭”和“捉老鼠”的方法,看看有什么特点?
答案:
-
多态访问特点是什么?
多态访问方法 : 编译看左边 , 执行看右边 多态不能访问子类特有功能 , 需要向下转型
-
代码
package com.homework; /* 有以下类定义: 动物类 属性:名称、年龄、性别 行为:吃 猫类继承动物 行为: 吃(重写) 捉老鼠 狗类继承动物 行为: 吃(重写) 看家 请按要求定义上述类,并用多态的格式测试调用“吃饭”和“捉老鼠”的方法,看看有什么特点? */ public class Test1 { public static void main(String[] args) { Animal cat = new Cat(); cat.eat(); ((Cat) cat).catchMouse(); Animal dog = new Dog(); dog.eat(); ((Dog) dog).lookHome(); } } /* 动物类 属性:名称、年龄、性别 行为:吃 */ abstract class Animal { private String breed; private int age; private String sex; public Animal() { } public Animal(String breed, int age, String sex) { this.breed = breed; this.age = age; this.sex = sex; } public String getBreed() { return breed; } public void setBreed(String breed) { this.breed = breed; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public abstract void eat(); } class Cat extends Animal { public Cat() { } public Cat(String breed, int age, String sex) { super(breed, age, sex); } @Override public void eat() { System.out.println("猫吃鱼..."); } public void catchMouse() { System.out.println("抓老鼠.."); } } class Dog extends Animal { public Dog() { } public Dog(String breed, int age, String sex) {