instance与可变参数合用,多态性

简介: public class Doubt {     public static void main(String[] args) {         Dog d1=new Dog();         Dog d2=new Zangao();         Dog d3=new Hasiq();         Master m=new Master();         m.

public class Doubt {

    public static void main(String[] args) {

        Dog d1=new Dog();

        Dog d2=new Zangao();

        Dog d3=new Hasiq();

        Master m=new Master();

        m.feed(d1,d2,d3);

 

 

 

    }

}

class Master {

    void feed(Dog ... d1) {

        for(Dog d:d1) {

            d.eat();

            if(d instanceof Zangao) {

                Zangao z=(Zangao)d;

                z.fight();

                System.out.println("是藏獒");

            }

            if(d instanceof Hasiq) {

                Hasiq h=(Hasiq)d;

                h.play();

                System.out.println("是哈士奇");

            }

        }

    }

}

class Dog {

    void eat() {

        System.out.println("狗吃东西");

 

    }

}

class Zangao extends Dog{

    void eat() {

        System.out.println("藏獒吃东西");

    }

    void fight() {

        System.out.println("我是藏獒,我爱战斗");

    }

}

class Hasiq extends Dog{

    void eat() {

        System.out.println("哈士奇吃东西");

    }

    void play() {

        System.out.println("我是哈士奇,我爱玩耍");

    }

}

目录
相关文章
|
3月前
|
C++
C++——类和对象(初始化列表、匿名对象、static成员、类的隐式类型转换和explicit关键字、内部类)
C++——类和对象(初始化列表、匿名对象、static成员、类的隐式类型转换和explicit关键字、内部类)
|
8月前
|
Kotlin
Kotlin 中定义类、field关键字,主构造函数和次构造函数详解
Kotlin 中定义类、field关键字,主构造函数和次构造函数详解
68 0
|
8月前
|
Kotlin
Kotlin中继承、类型转换、Any超类、object关键字详解
Kotlin中继承、类型转换、Any超类、object关键字详解
79 0
|
4月前
|
Java Go
【Java 泛型方法】泛型方法的定义和使用,泛型的通配符和泛型的上下限,泛型的注意事项
【Java 泛型方法】泛型方法的定义和使用,泛型的通配符和泛型的上下限,泛型的注意事项
|
6月前
|
编译器 程序员 C++
函数重载(function overloading)
函数重载(function overloading)是编程语言中一种支持多个同名函数的特性,这些函数在参数列表(参数类型和数量)上有所不同。当调用一个重载函数时,编译器会根据函数参数列表的具体情况进行匹配,然后调用相应的函数实现。
57 5
|
9月前
|
C++
【C++多态】 --- 多态问题抛出与virtual关键字
【C++多态】 --- 多态问题抛出与virtual关键字
33 0
|
10月前
|
编译器 数据安全/隐私保护
构造器及重载
构造器及重载
59 0
|
缓存 Dart 安全
Dart中的类——初始化列表、命名构造器、factory构造器、常量构造器、构造器私有化、get和set方法、枚举
Dart中的类——初始化列表、命名构造器、factory构造器、常量构造器、构造器私有化、get和set方法、枚举
C#编程-108:调用泛型方法
C#编程-108:调用泛型方法
C#编程-108:调用泛型方法