abstract 抽象
abstract 抽象
类:不能具体实例化的类,不能创建对象。
1.不能new这个抽象类。只能靠子类去实现它:约束!--- 所以我们不能用final修饰
我们所谓的new是指:抽象类类名 抽象类对象名 = new 抽象类类名(参数可能有可能无) 这种形式
一个类继承抽象类之后,必须重写抽象类中的抽象方法,不想重写,则子类也有变成抽象类
2.抽象类可以有抽象方法和非抽象方法,成员方法,构造方法,成员变量
3.只要包含一个抽象方法,那么类必须为抽象类
//抽象类 public abstract class Student { //成员变量 String name = "Animal"; // 抽象方法 public abstract void run (); // 成员方法 public void eat (){ //不能实例化抽象类,抽象方法没有方法体,实例化干啥 //Student s = new Student(); //忽略内部类实现 Student s = new Student() { @Override public void run() { } }; }; } public class Test2 extends Student{ //一个类继承抽象类之后,必须重写抽象类中的抽象方法 @Override public void run() {} } //不想重写,则子类也有变成抽象类 public abstract class Test3 extends Student{ /** @Override public void run() {} */ public static void main(String[] args) { iterator1 iterator1 = new iterator1() { @Override public void run() { System.out.println("1111111"); } }; } }
方法:不能具体实现的方法,没有方法体。
补充
一个类中包含抽象方法,那么类也必须为抽象类
抽象方法没有方法体,调用抽象方法没有意义,如果类不加static,有的人就会调用这个抽象方法,为了防止程序员进行无意义的调用,所以有抽象方法的类必须是抽象类,无法创建这个对象,也就无法调用抽象方法
//抽象类 public abstract class Student { // 抽象方法 public abstract void run (); }
普通类和抽象类有哪些区别?
普通类不能包含抽象方法,抽象类可以包含抽象方法。
抽象类不能直接实例化,普通类可以直接实例化。
抽象类能使用 final 修饰吗?