抽象方法
- 必须在抽象类中
- 没有方法体
- 默认公开
抽象类
abstract修饰的类为抽象类、abstract修饰的方法为抽象方法。抽象类里面的抽象方法不能有方法体、一般用于制作模板所用(类里面共有的属性和方法封装成一个父类);
抽象类无法实例化
继承抽象类的子类、必须重写其抽象方法
接口
接口默认是抽象的、无需使用abstract修饰
实现接口使用 implement 例如implement 接口名1,接口名2
类只能单继承,而接口可以多实现(多继承)
接口里面的方法都为抽象方法、所有没加abstract的方法都默认为抽象方法
接口可以使用extends继承接口,但不能使用implements实现接口
定义的接口类型对象可以赋值引用对其实现的类、只有接口类里面所含的抽象方法才能够上转
public interface Doctor {
//治疗
public abstract void getCure();
}
public interface Foot {
public abstract String getFoot();
}
public abstract class Animal {
private String name;
//吃
public abstract void eat(String foot);
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class Cat extends Animal implements Doctor, Foot {
public Cat(String name) {
super.setName(name);
}
@Override
public void eat(String foot) {
System.out.println(super.getName()+"吃了"+foot);
}
@Override
public void getCure() {
System.out.println("治疗了"+super.getName());
}
@Override
public String getFoot() {
return "猫粮";
}
}
public class Dog extends Animal implements Doctor,Foot{
public Dog(String name){
super.setName(name);
}
@Override
public void eat(String foot) {
System.out.println(super.getName()+"吃了"+foot);
}
@Override
public void getCure() {
System.out.println("治疗了"+super.getName());
}
@Override
public String getFoot() {
return "狗粮";
}
}
public class Demo01 {
public static void main(String[] args) {
Cat cat = new Cat("小猫");
Dog dog = new Dog("小狗");
cat.eat(cat.getFoot());
cat.getCure();
dog.eat(dog.getFoot());
dog.getCure();
}
}