4.4polymorphic
Posted wision-22
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4.4polymorphic相关的知识,希望对你有一定的参考价值。
多态没什么可注意的,值得注意的关键字是instanceof,针对解释"它可以判断一个对象是否为某个类的实例或者子类"
代码如下:
package D10;
public class AnimalTest {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Animal a1= new Cat(); //新建对象使用Animal类的a1引用它
Animal a2= new Dog();
animalShout(a1);
// animalShout(a2);
}
public static void animalShout(Animal sh) { //多态利用参数确认实现方法
sh.shout();
Cat cat=(Cat) sh;
cat.sleep();
}
}
// TODO 自动生成的方法存根
Animal a1= new Cat(); //新建对象使用Animal类的a1引用它
Animal a2= new Dog();
animalShout(a1);
// animalShout(a2);
}
public static void animalShout(Animal sh) { //多态利用参数确认实现方法
sh.shout();
Cat cat=(Cat) sh;
cat.sleep();
}
}
/*-------------------------------------------------------------------------------------------------------------------------------------分割*/
package D10;
class Cat implements Animal {
public void shout() { //去掉public会怎样?
System.out.println("喵喵~");
}
public void sleep() { //去掉public会怎样?
System.out.println("睡觉~");
}
}
public void shout() { //去掉public会怎样?
System.out.println("喵喵~");
}
public void sleep() { //去掉public会怎样?
System.out.println("睡觉~");
}
}
/*-------------------------------------------------------------------------------------------------------------------------------------分割*/
package D10;
class Dog implements Animal {
public void shout() {
System.out.println("汪汪~");
}
}
public void shout() {
System.out.println("汪汪~");
}
}
/*-------------------------------------------------------------------------------------------------------------------------------------分割*/
package D10;
interface Animal {
void shout();
}
void shout();
}
实现:
package D10;
public class AnimalTest {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Animal a1= new Cat(); //新建对象使用Animal类的a1引用它
Animal a2= new Dog();
animalShout(a1);
animalShout(a2);
}
public static void animalShout(Animal sh) { //多态利用参数确认实现方法
if (sh instanceof Cat) {
sh.shout();
Cat cat=(Cat) sh;
cat.sleep();
}else {
sh.shout();
}
}
}
// TODO 自动生成的方法存根
Animal a1= new Cat(); //新建对象使用Animal类的a1引用它
Animal a2= new Dog();
animalShout(a1);
animalShout(a2);
}
public static void animalShout(Animal sh) { //多态利用参数确认实现方法
if (sh instanceof Cat) {
sh.shout();
Cat cat=(Cat) sh;
cat.sleep();
}else {
sh.shout();
}
}
}
以上是关于4.4polymorphic的主要内容,如果未能解决你的问题,请参考以下文章
如何访问`std::variant`的任何孩子的`polymorphic`基类?