(二十)、抽象类

来源:互联网 发布:小额贷款什么软件好 编辑:程序博客网 时间:2024/05/22 05:08

抽象类

抽象类:用abstract修饰的类
抽象方法:只有方法声明,没有方法体,用abstract修饰的方法

1.抽象必须用abstract修饰
2.抽象类可以拥有普通类的所有成员,还可以有抽象方法
3.抽象类不能直接创建对象,只能通过他的非抽象子类来创建
4.抽象类的子类必须实现抽象类的所有抽象方法,如果不实现,
必须把这个子类标记为抽象类
5.抽象类可以没有抽象方法,但抽象方法必须放在抽象类中
6.抽象类和抽象方法不能用final修饰
7.抽象方法不能用private修饰
8.抽象方法能用protected修饰
9.抽象方法不能用static修饰

Demo:

Pet类:

public abstract class Pet { // 抽象类    public abstract void speak(); // 抽象方法}

Dog类:

public class Dog extends Pet {    @Override    public void speak() {        System.out.println("狗在叫");    }    public void eat() {        System.out.println("狗在吃");    }}

继承Pet并重写了Pet的抽象方法,还具有一个自己的eat()方法

Main类:

public class Main {    public static void main(String[] args) {        Pet pet = new Dog();// 自动类型转换        pet.speak();        Dog dog = (Dog) pet;// 强制类型转换        dog.eat();    }}

多态

以上面的Demo为例:

Pet pet = new Dog();
两边类型不一致,称之为多态

Pet pet:编译时类型
编译能否通过看编译时类型
编译时能不能通过看编译时类型有没有相应的方法

new Dog():运行时类型
运行时候的具体结果看运行时类型

  • 类型的转换

    • 自动类型转换(自动类型提升,向上转换):把子类的对象赋值给父类的引用

    • 强制类型转换:把父类对象赋值给子类,需强制类型转换
      instanceof 判断是否属于哪个类型
      对象引用 instanceof 类

0 0
原创粉丝点击