// 定义一个动物接口
interface Animal4 {
void shout();
}
//定义一个🐱类继承动物接口,并实现shout方法
class Cat4 implements Animal4{
public void shout(){
System.out.println("喵喵。。。。。。");
}
}
//定义一个🐕类继承动物接口,并实现shout方法
class Dog4 implements Animal4{
public void shout(){
System.out.println("汪汪汪。。。。。。。。。");
}
}
//测试类
public class Example13 {
public static void main(String[] args) {
//
Animal4 an1 = new Cat4();
Animal4 an2 =new Dog4();
//定义一个静态方法animalshout方法,接受一个animal方法
public static void Animalshout(Animal4 an){
an.shout();
}
}
}
我觉得是接口的用法的问题,Animal4是一个接口 ,接口的调用是需把动物类对象给接口变量,然后再用用接口变量调用方法,这时执行的是动物类对象的方法。我刚学C#,两种语言实现多态应该是差不多的。
package com.xin.cnblog;
public interface Animal {
public void shout();
}
package com.xin.cnblog;
public class Cat implements Animal {
@Override
public void shout() {
// TODO Auto-generated method stub
System.out.println("meow meow……");
}
}
package com.xin.cnblog;
public class Dog implements Animal {
@Override
public void shout() {
// TODO Auto-generated method stub
System.out.println("aha aha aha……");
}
}
package com.xin.cnblog;
public class Example {
public static void main(String[] args) {
// TODO Auto-generated method stub
Animal cat = new Cat();
Animal dog = new Dog();
cat.shout();
dog.shout();
}
}
OK
你为什么要在Main
方法里定义静态方法Animalshout
?