12.java基础----多态,内部类,常用API编程题



命名要求:
	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) {
         
    
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值