多态的练习题

看程序,说出运算结果

题目(1)

/*
    看程序写结果:先判断有没有问题,如果没有,写出结果
*/
class Fu {
    public void show() {
        System.out.println("fu show");
    }
}

class Zi extends Fu {
    public void show() {
        System.out.println("zi show");
    }

public void method() {
        System.out.println("zi method");
    }
}

class DuoTaiTest3 {
    public static void main(String[] args) {
        Fu f = new Zi();
        //找不到符号
        //f.method();//运行这个会报错
        f.show();
    }
}

题目(2)

/*
    看程序写结果:先判断有没有问题,如果没有,写出结果
    
    多态的成员访问特点:
        方法:编译看左边,运行看右边。
        
    继承的时候:
        子类中有和父类中一样的方法,叫重写。
        子类中没有父亲中出现过的方法,方法就被继承过来了。
*/
class A {
    public void show() {
        show2();
    }
    public void show2() {
        System.out.println("我");
    }
}
class B extends A {
    /*
    public void show() {
        show2();
    }
    *///这里的意思是B继承了A的show方法,因为类B并没有自己所属的show方法

public void show2() {
        System.out.println("爱");
    }
}
class C extends B {
    public void show() {
        super.show();
    }
    public void show2() {
        System.out.println("你");
    }
}
public class DuoTaiTest4 {
    public static void main(String[] args) {
        A a = new B();
        a.show();
        
        B b = new C();
        b.show();
    }
}

最终答案是:爱你

为了熟悉多态,写出了以下案例理解

部分案例:

猫狗案例:

/*
    多态练习:猫狗案例
*/
class Animal {
    public void eat(){
        System.out.println("吃饭");
    }
}

class Dog extends Animal {
    public void eat() {
        System.out.println("狗吃肉");
    }
    
    public void lookDoor() {
        System.out.println("狗看门");
    }
}

class Cat extends Animal {
    public void eat() {
        System.out.println("猫吃鱼");
    }
    
    public void playGame() {
        System.out.println("猫捉迷藏");
    }
}

class DuoTaiTest {
    public static void main(String[] args) {
        //定义为狗
        Animal a = new Dog();
        a.eat();
        System.out.println("--------------");
        //还原成狗
        Dog d = (Dog)a;
        d.eat();
        d.lookDoor();
        System.out.println("--------------");
        //变成猫
        a = new Cat();
        a.eat();
        System.out.println("--------------");
        //还原成猫
        Cat c = (Cat)a;
        c.eat();
        c.playGame();
        System.out.println("--------------");
        
        //演示错误的内容
        //Dog dd = new Animal();
        //Dog ddd = new Cat();
        //ClassCastException
        //Dog dd = (Dog)a;
    }
}

南北方人案例:  

/*
    不同地方饮食文化不同的案例
*/
class Person {
    public void eat() {
        System.out.println("吃饭");
    }
}

class SouthPerson extends Person {
    public void eat() {
        System.out.println("炒菜,吃米饭");
    }
    
    public void jingShang() {
        System.out.println("经商");
    }
}

class NorthPerson extends Person {
    public void eat() {
        System.out.println("炖菜,吃馒头");
    }
    
    public void yanJiu() {
        System.out.println("研究");
    }
}

class DuoTaiTest2 {
    public static void main(String[] args) {
        //测试
        //南方人
        Person p = new SouthPerson();
        p.eat();
        System.out.println("-------------");
        SouthPerson sp = (SouthPerson)p;
        sp.eat();
        sp.jingShang();
        System.out.println("-------------");
        
        //北方人
        p = new NorthPerson();
        p.eat();
        System.out.println("-------------");
        NorthPerson np = (NorthPerson)p;
        np.eat();
        np.yanJiu();
    }
}

时间: 2024-10-05 13:40:10

多态的练习题的相关文章

python3学习之对象

#过程编程----函数编程(代码复用高)--面向对象 #python 支持  函数式+面向对象 编程 # def mail(email,message): #     print("sendsend") #     return True # # mail("[email protected]","boy") #先创建类,再创建对象 # class Foo:     #对象中的函数叫方法     # def mail(self,email,mes

JavaSE学习总结第09天_面向对象4

09.01 final关键字引入 例: 1 class Fu 2 { 3 public final void show() 4 { 5 System.out.println("访问底层资源"); 6 } 7 } 8 class Zi extends Fu 9 { 10 public void show() 11 { 12 System.out.println("Zi show run"); 13 } 14 } 15 class Demo 16 { 17 public

Java面向对象练习题多态测试

按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n): (2)编写一个类:ClassA来实现接口InterfaceA,实现int method(int n)接口方 法时,要求计算1到n的和: (3)编写另一个类:ClassB来实现接口InterfaceA,实现int method(int n)接口 方法时,要求计算n的阶乘(n!): (4)编写测试类E,在测试类E的main方法中使用接口回调的形式来测试实现 接口的类. //Inte

学习笔记——Java核心技术之接口、继承与多态练习题

1.创建一个抽象类,验证它是否可以实例化对象. package com.lzw; public abstract class UseCase3 { abstract void doit(); public static void main(String args[]){ new UseCase3(); } } 2.尝试创建一个父类,在父类中创建两个方法,在子类中覆盖第二个方法,为子类创建一个对象,将它向上转型到基类并调用这个方法. package com.lzw; public class Us

Java面向对象练习题多态之字母表

34.编写2个接口:InterfaceA和InterfaceB:在接口InterfaceA中有个方法void printCapitalLetter():在接口InterfaceB中有个方法void printLowercaseLetter():然 后写一个类Print实现接口InterfaceA和InterfaceB,要求printCapitalLetter()方法 实现输出大写英文字母表的功能,printLowercaseLetter()方法实现输出小写英文 字母表的功能.再写一个主类E,在主

面向对象:封装继承和多态、接口

1.多态 定义:不同对象对于同一个方法(Cut)调用表现出不同行为多态性主要是靠重写和隐藏来实现 a.(父类引用指向子类对象)b.(父类类型做参数,传递子类对象)自定义方法参数是父类类型 传递的实参是子类对象c.(父类类型作返回类型,return子类对象)自定义方法的返回类型是父类类型,return是类对象注:都是把子类对象赋给父类类型 举例: 添加乐器类using System;using System.Collections.Generic;using System.Linq;using S

009.面向对象之多态、封装、密封类、接口

1.多态 定义:不同对象对于同一个方法(Cut)调用表现出不同行为多态性主要是靠重写和隐藏来实现 a.(父类引用指向子类对象)b.(父类类型做参数,传递子类对象)自定义方法参数是父类类型 传递的实参是子类对象c.(父类类型作返回类型,return子类对象)自定义方法的返回类型是父类类型,return是类对象注:都是把子类对象赋给父类类型 举例: 添加乐器类using System;using System.Collections.Generic;using System.Linq;using S

多态练习一

public class Animal { String name; public Animal() { super(); } public Animal(String name) { super(); this.name = name; } public void eat(){ System.out.println("正在吃"); } } public class Cat extends Animal { public void eat(){ System.out.println(&

黑马程序员(Java)----面向对象(多态、抽象类、接口)

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 3.7 多态 3.7.1.理解多态 多态可以理解为事物存在的多种体现形态.例如下面的代码: Cat c = new Cat(); Animal a = new Cat(); 建立一个猫的对象,可以用猫这个类引用,也可以用动物这个类引用. 3.7.2.多态的前提 1.类与类之间必须有关系,要么继承,要么实现. 2.存在覆盖.父类中有方法被子类重写(其实没有也是可以的,但是如果没有这个就没有意义)