/**
* 学习抽象类和抽象方法
* 抽象方法:只进行方法的声明,而不提供具体的实现(没有方法体)
* 抽象类:只要在一个类中有一个抽象方法,那么这个就得声明一个抽象类
* 抽象类和抽象方法的定义:
* abstract class 类名{}
* public abstract 返回值/void 方法名();
* 抽象类中可以没有抽象方法
* 抽象类不能直接进行实例化 不能直接new 编译报错
* 抽象类主要是让别人继承的
*/
public class Study_Abstract {
}
// 抽象类
abstract class Animal{
public abstract void eat(); // 抽象方法
public abstract void call();
public void sleep(){
System.out.println("动物要睡觉了");
}
}
class Dog extends Animal{
// @Override
// public void call() {
// System.out.println("Dog.call");
// }
@Override
public void call() {
System.out.println("Dog.call");
}
@Override
public void eat() {
System.out.println("Dog.eat");
}
}
class Cat extends Animal{
@Override
public void call() {
System.out.println("Cat.call");
}
@Override
public void eat() {
System.out.println("Cat.eat");
}
}
抽象类被继承后,要么必须重写抽象方法,要么子类也声明抽象类。