什么是抽象类?
1、抽象方法和抽象类用关键字
abstract
表示。
2、 有抽象方法的类一定是抽象类 ( 或者接口 ) 。抽象类中不一定有抽象方法。
3、 抽象类不能被实例化。 //因为被实例化后根本不知到他具体代表的谁
4、如果一个类继承抽象类,那么 这个类要么本身也是抽象类。 这个类 必须 重写父类的所有抽象方法。
2、 有抽象方法的类一定是抽象类 ( 或者接口 ) 。抽象类中不一定有抽象方法。
3、 抽象类不能被实例化。 //因为被实例化后根本不知到他具体代表的谁
4、如果一个类继承抽象类,那么 这个类要么本身也是抽象类。 这个类 必须 重写父类的所有抽象方法。
1、抽象方法
只有方法声明,没有方法体的方法称为抽象方法,该方法被abstract修饰
2、抽象类
如果一个类中含有抽象方法,这个类就可以被称为
抽象类。该类也需要被
abstract
修饰
3、什么时候定义抽象类
如果一个方法我们不确定他要做什么,就把这个方法定义成抽象的,那么这个类就必须被定义成抽象的
抽象类的抽象方法
3、格式
定义抽象类的格式
abstract class Animal{
abstract void eat();
public void run(){
System.out.println("我在跑步");
}
}
使用格式1
定义个普通类,继承抽象类,必须实现抽象类中的抽象方法
class Dog extends Animal{
void eat(){
System.out.println("狗吃骨头");
}
}
使用格式2
定义一个抽象类继承抽象类,不是必须要实现父类的抽象方法
abstract class Cat extends Animal{
}
------------------------
-抽象类能否继承普通类与接口能否继承普通类-------------
//抽象类继承普通类
abstract class Teacher21 extends Person{
public abstract void show();
}
class Person{
int age =22;
public void say(){
System.out.println("person");
}
}
class Student extends Teacher21{
@Override
public void show() {
System.out.println("继承于Teacher21");
}
}
public class TestAbstract {
public static void main(String[] args) {
// TODO Auto-generated method stub
Student s = new Student();
s.show();
s.say();
}
}
结果:
继承于Teacher21
person
结论:抽象类能继承普通类,接口不能继承普通类