Java基础复习 Day 12
1. 抽象类,抽象方法
-
抽象方法:如果父类不能具体确定具体的实现方法,那么就要定义为抽象方法
定义:就是加上abstract关键字,去掉大括号里的具体实现内容,直接以分号结束。
-
抽象类:抽象方法所在的类,必须是抽象类,在class前面加上关键字abstract
public abstract class Animal { //这是一个抽象方法,代表吃东西,但是具体吃什么,内容不确定 public abstract void eat(); }
-
抽象方法和抽象类的使用
-
不能用new直接去new一个抽象类对象。
-
必须要用一个子类来继承父类
-
子类必须覆盖重写父类所有当中所有的抽象方法
★覆盖重写:子类去掉抽象方法的abstract关键字,并补上方法体大括号
-
创建子类对象进行使用。
//父类 public abstract class Animal { //这是一个抽象方法,代表吃东西,但是具体吃什么,内容不确定 public abstract void eat(); } //子类继承父类,实现抽象方法 public class Dogs extends Animal{ @Override public void eat() { System.out.println("dogs eat bones!!!!"); } } //Main方法 创建子类对象进行使用 public static void main(String[] args) { Dogs dog1 = new Dogs(); dog1.eat();//dogs eat bones!!!! }·
-
-
抽象类的注意事项
-
抽象类不能创建对象,如果创建,则会编译报错
-
抽象类中可以有构造方法,是供子类创建对象时,初始化父类成员使用的。
-
抽象方法中,不一定有抽象方法,但是有抽象方法的类一定是抽象类。
-
抽象类的非抽象子类必须重写抽象父类中的所有抽象方法,否则也会发生编译报错
//父类是抽象类 public abstract class Animal { //这是一个抽象方法,代表吃东西,但是具体吃什么,内容不确定 public abstract void eat(); public abstract void sleep(); } //子类也是抽象类时,可不必全都实现父类的所有抽象方法 public abstract class Dogs extends Animal{ @Override public void eat() { System.out.println("dogs eat bones!!!!"); } } //但由于子类是抽象类时,也是无法创建对象,所以要想使用继续找子类继承Dogs public class Giwawa extends Dogs{ @Override public void sleep() { System.out.println("giwawa is sleeping badly"); } } public class GodenRetriever extends Dogs{ @Override public void sleep() { System.out.println("golden retriever sleep good"); } } //Main方法 public static void main(String[] args) { GodenRetriever godenRetriever = new GodenRetriever(); godenRetriever.sleep(); godenRetriever.eat(); Giwawa giwawa = new Giwawa(); giwawa.sleep(); giwawa.eat(); }
-