您的位置:首页 > 编程语言 > Java开发

java 抽象类 抽象方法被调用 static 方法不能被复写

2016-03-20 13:26 671 查看
父类代码如下:

public abstract class Animal {

public float weight;
public float height;

public void practice() { //static 是类方法,不能被子类复写
run(); // 在抽象类中,abstract 方法可以被非abstract 方法调用,
eat(); //但是直到abstract 方法被复写,这个非abstract 方法才能被执行
System.out.println("practice is over!");
}

public abstract void run(); //这个已经是abstract 方法了,则不能再是static 方法。static 不能修饰abstract,abstract是必须被复写的方法,static 是不能被复写,矛盾

public abstract void eat();

public static void main(String[] args) {
//由以下两句代码可知,abstract 类的非abstract 方法也没法直接被外界用,abstract 除了被继承,一无所用
//Animal.practice(); //本句错,practice() 不是static 方法,不能被类调用
//Animal a = new Animal();//本句错,abstract 类不能实例化方法。
}
}

子类代码如下:

public class Cat extends Animal{

@Override
public void practice(){  //子类只能复写父类的非static 方法,父类的static 方法不能被复写

}

@Override
public void run() {  //abstract 的方法必须被复写

}

@Override
public void eat() {

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: