abstract应用的地方与相应的语法
abstract可以用来修饰类、成员方法
修饰类的语法:abstract class 类名{}
被abstract修饰的类 只能声明 不能创建相应的对象
抽象类编译也生成相应的class文件
抽象类也有构造方法,但不是用来创建对象 是给子类创建时默认生成相应的父类
修饰方法的语法:访问修饰符 abstract 返回值类型 方法名(形参);
注意事项:1. 访问修饰符与abstract的位置没有要求 可以先写访问修饰符 也可以先写abstract
2.抽象方法只能定义在抽象类中 但抽象类可以定义抽象方法也可以定义为抽象方法
被abstract修饰的类可以有子类 并且子类也可以是被abstract修饰的 如果不想被修饰也可以 那么就要把父类中被abstract修饰的方法进行重写
子类方法重写的语法:访问修饰符 父类返回值类型 父类方法名(形参){}
在外界生成子类对象的语法
抽象父类名 引用名=new 子类名(形参);
抽象类强制使用多态
例:
`
public class TestAnimal{
public static void main(String[] args){
Animal[] a={
new Dog(),
new Cat()
};
a[0].eat();
a[1].eat();
}
}
abstract class Animal{
public abstract void eat();
}
class Dog extends Animal{
public void eat(){
System.out.println("Dog------eat");
}
}
class Cat extends Animal{
public void eat(){
System.out.println("Cat------eat");
}
}`
代码运行结果
abstract应用场景
1 通常将一些父类定义为抽象类:具有某一类事物的特性和行为,但是不具有具体的执行功能(实现)。例如:动物类、图形类等。
2 依赖倒转原则 将强耦合 变成弱耦合 一个类与一个子建立关系 避免直接建立 让其与其父类建立关系 这样可以提高代码可维护性