JAVA接口类型的方法
classZoo{privateclassTigerimplementsAnimal{publicvoideat(){System.out.println("tigere...
class Zoo
{
private class Tiger implements Animal
{
public void eat()
{
System.out.println("tiger eat");
}
public void sleep()
{
System.out.println("tiger sleep");
}
}
Animal getAnimal()//这里不明白,Animal不是接口么,怎么可以定义方法?
{
return new Animal()//还有这里,接口不是不能实例化么??
{
public void eat()
{
System.out.println("animal eat");
}
public void sleep()
{
System.out.println("animal sleep");
}
};
}
}
class Test
{
public static void main(String[] args)
{
Zoo z=new Zoo();
Animal an=z.getAnimal();
an.eat();
an.sleep();
}
}
interface Animal
{
void eat();
void sleep();
} 展开
{
private class Tiger implements Animal
{
public void eat()
{
System.out.println("tiger eat");
}
public void sleep()
{
System.out.println("tiger sleep");
}
}
Animal getAnimal()//这里不明白,Animal不是接口么,怎么可以定义方法?
{
return new Animal()//还有这里,接口不是不能实例化么??
{
public void eat()
{
System.out.println("animal eat");
}
public void sleep()
{
System.out.println("animal sleep");
}
};
}
}
class Test
{
public static void main(String[] args)
{
Zoo z=new Zoo();
Animal an=z.getAnimal();
an.eat();
an.sleep();
}
}
interface Animal
{
void eat();
void sleep();
} 展开
展开全部
package baidu;
class Zoo {
private class Tiger implements Animal {
public void eat() {
System.out.println("tiger eat");
}
public void sleep() {
System.out.println("tiger sleep");
}
}
Animal getAnimal()// 这里不明白,Animal不是接口么,怎么可以定义方法?
{
return new Animal()// 还有这里,接口不是不能实例化么?? 你说的没有错,确实不能实例化,但是这里是匿名类,效果相当于代码2
{
public void eat() {
System.out.println("animal eat");
}
public void sleep() {
System.out.println("animal sleep");
}
};
}
//代码2
Animal getAnimal2(){
class AnimalTest implements Animal{
@Override
public void eat() {
// TODO Auto-generated method stub
}
@Override
public void sleep() {
// TODO Auto-generated method stub
}
}
return new AnimalTest();
}
}
class Test {
public static void main(String[] args) {
Zoo z = new Zoo();
Animal an = z.getAnimal();
an.eat();
an.sleep();
}
}
interface Animal {
void eat();
void sleep();
}
展开全部
返回的不是Animal,其实是Animal的匿名子类,因为已经把Animal借口中的抽闲函数具体化了。
楼主可以查阅java创建匿名子类的相关资料。给你写个例子:
Interface A
{
void show();
}
class Test
{
pubic static void main(String[] args)
{
Interface a=null;
//a=new Interface(); 这句是错误的,接口不能实例化
a=new Interface(){
pulibc static void show()
{
System.out.println("我其实是接口的实现子类,不是接口");
}
};
a.show();//正确
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Animal getAnimal(),接口可以作为返回类型,指定返回的类型必须是实现当前接口的类.
new Animal(){
void eat() {
}
void sleep() {
}
}
这是一个匿名类,只是这个类没有类名,但它实现了Animal接口,
如果换个写法你可能就明白了:
...
Animal getAnimal() {
return new A();
}
...
class A implements Animal {
public void eat(){
System.out.println("animal eat");
}
public void sleep(){
System.out.println("animal sleep");
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Animal getAnimal()//这里不明白,Animal不是接口么,怎么可以定义方法?
接口不能直接实例化,但是可以做方法的返回类型
return new Animal()//还有这里,接口不是不能实例化么??
{
。。。。}
这里相当于一个匿名内部类,为Animal的一个子类,所以可以实例化
接口不能直接实例化,但是可以做方法的返回类型
return new Animal()//还有这里,接口不是不能实例化么??
{
。。。。}
这里相当于一个匿名内部类,为Animal的一个子类,所以可以实例化
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询