java新手,想求解一下java基础知识
这是一个本身没有什么真正逻辑的程序,只是为了运用知识而写,就想问下表情位置为什么不能编译?package 多态;
abstract public class Animal {//抽象类和抽象方法表示不一样,注意
public int i=1;//public 代表存取权限的一个等级,其等级最高,private的等级最低
public abstract void eat();//抽象方法必须有抽象的类,没有花括号
public abstract void roar();
public static class dogs extends Animal implements Pet{
public void eat(){
System.out.println("I am a dog so"+"I eat shit!");
System.out.println(i);//测试下能否继承实例变量
}
public void roar(){
System.out.println("RUFF!");
}
public void ask(){//测试能否加入新方法
System.out.println("What's my name?");
}
public void pet(){
System.out.println("I am a pet!");
}
}
public static class cats extends Animal implements Pet{
public void eat(){//方法的覆盖,如是同名字不同参数,不同返回类型,则是overload,即重载
System.out.println("I am a cat so I eat fish");
System.out.println("you are right!");//测试能否在引用父类方法的情况下,加上额外的行为
}
public void roar(){
System.out.println("Miao!");
}
public void pet(){
System.out.println("you creat a right cat!");
}
}
public static interface Pet{//设置接口,连接cat和dog,注意接口的方法一定是抽象的,且所关联的类必须覆盖全部的抽象方法
public abstract void pet();
}
public static void main(String args[]) {//每个main函数必须有String args[],它代表一个数组,用来接受输入的参数,可以用args[0]等得到输入内容,又因为java里只有一种main(函数,其它函数不能识别
Animal [] animal=new Animal[3];
animal[0]=new dogs();
animal[1]=new cats();
animal[0].eat();
animal[0].roar();
animal[0].pet();
animal[1].eat();
animal[1].roar();
}
}
系统提示表情位置编译错误,该如何改才能调用子类dogs的pet和ask方法?