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();
 }
}
 
/*-------------------------------------------------------------------------------------------------------------------------------------分割*/
package D10;
 class Cat implements Animal {
  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("汪汪~");
  }
}
/*-------------------------------------------------------------------------------------------------------------------------------------分割*/
package D10;
interface  Animal {
 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();
 }
  
 }
}
 
 
技术分享图片技术分享图片

 

 

 













































以上是关于4.4polymorphic的主要内容,如果未能解决你的问题,请参考以下文章

如何访问`std::variant`的任何孩子的`polymorphic`基类?

面向对象三大特性一一多态(polymorphism)

使用 Django-Polymorphic 包时如何根据实例类型进行过滤?

text ActiveRecord Polymorphic

golang polymorph_json.go

polymorphism多态