1.abstract
抽象类用于,子类继承父类,父类的方法没有实际意义的时候,但方法必须写方法执行语句,这时就可以使用抽象类。
方法没有具体的执行语句,所以可以用abstract修饰,变为抽象方法,因为没法执行抽象方法,所以该类也得声明为抽象类。
注意事项:
1.当方法为抽象类,则该类也必须为抽象类。并且当子类继承时,必须对抽象类进行实现。
2.抽象类不可实例化,抽象类只能被继承。
作用:子类必须实现父类的抽象方法,相当于对子类进行了一个“规范”
例如:
abstract class Person {
public abstract void run();
}
2.面向抽象编程
定义:这种尽量引用高层类型,避免引用实际子类型的方式,称之为面向抽象编程。
使用抽象类去引用子类型,调用者不需要管子类如何实现具体方法。
本质:
1.上层代码只定义规范(例如:abstract class Person
);
2.不需要子类就可以实现业务逻辑(正常编译);
3.具体的业务逻辑由不同的子类实现,调用者并不关心。
注意事项:
1.引用高层类型时,子类中自定义的方法不会被引用,只会引用到父类中的方法。
例如:
public class AbstractTest {
public static void main(String[] args){
Person s = new Student();
//只能引用person中存在的方法
s.run();
//s.name(); 不存在
}
}
abstract class Person{
public abstract void run ();
}
class Student extends Person{
@Override
public void run() {
System.out.println("Student.run");
}
public void name(){
System.out.println("student.name");
}
}