简单看看下面的代码
public class Animal {
public void shout(){
System.out.println("shout");
}
public void run(){
System.out.println("run...");
}
}
public class Dog extends Animal{
@Override
public void shout() {
System.out.println("wang wang ");
}
}
public class Cat extends Animal{
@Override
public void shout() {
System.out.println("miao miao ");
}
}
我们发现子类重写了父类的方法,那么父类方法的具体实现子类就没有怎么关注,所以我们可以先抽象出来
public abstract class Animal {
public abstract void shout();
public void run(){
System.out.println("run...");
}
}
public class Cat extends Animal{
@Override
public void shout() {
System.out.println("miao miao ");
}
}
public abstract class Animal {
public abstract void shout();
}
这就是抽象类,父类的具体实现子类并不是很关注,我们就可以抽出来。
注意:抽象类是不可以直接实例化的,可以通过子类间接实例化
含有抽象方法的类一定是抽象类,抽象类里不一定含有抽象方法。