接口中的方法默认都是 public,abstract 类型的
- 抽象类之后不能实例化
例如: Person p1=new Person(); // 报错 - 如何能使用抽象类中的方法?------> 用子类
- 抽象类中一定有构造器,便于子类实例化使用 在子类调用抽象类中方法
//抽象类
abstract class Person{
String name;
int age;
public Person() {
}
public Person(String name,int age) {
this.name=name;
this.age=age;
}
public void eat() {
System.out.println("person eating");
}
抽象类中eat()方法不能通过实例化抽象类调用
class Man extends Person{
public Man(String name,int age) {
super(); //public Person()
}
}
如何调用抽象类中的eat方法呢?
public class Abstract {
public static void main(String[] args) {
Man s1=new Man("dd",4);
s1.eat();//通过子类,调用抽象类中方法
}
}
通过实例化子类Man则可以调用eat()方法 就可以了~
- 父类中的抽象方法,只用方法的声明,没有方法体。需在子类中重写
- 包含抽象方法的类,一定为抽象类
- 若子类没有重写全部的父类抽象方法,则子类为抽象类【加abstract】
抽象方法的定义:
public abstract void sleep();
无需加大括号
在子类中重写
public void sleep() {
System.out.println("person sleeping");
}
最后只需要在main中通过实例来获取(跟抽象类一样)
注意:
absract不能用来修饰属性与构造器