今天复习了一下以前学习过的Java基础知识
抽象类和抽象方法 什么是抽象类和抽象方法?废话不多说,直接上代码
抽象类Animal
public abstract class Animal {
public abstract void eat(); //这就是一个抽象方法,表示吃东西,具体吃什么不确定
public void method(){} //这是普通的成员方法
}
抽象类和抽象方法的使用
抽象类Animal
public abstract class Animal {
public abstract void eat(); //这就是一个抽象方法,表示吃东西,具体吃什么不确定
public void method(){} //这是普通的成员方法
}
Dog类
public class Dog extends Animal{
@Override
public void eat() {
System.out.println("狗吃骨头");
}
}
Main类
public class Main {
public static void main(String[] args){
//Animal animal = new Animal(); //错误写法,不能直接创建抽象类对象
Dog dog = new Dog(); //创建抽象类Animal的子类Dog对象
dog.eat(); //运行结果:狗吃骨头
}
}
运行结果
抽象类和抽象方法的注意事项1.抽象类不能创建对象
2.抽象类中,可以有构造方法,是供子类创建对象时,初始化父类成员使用的
Fu抽象类
public abstract class Fu {
public Fu(){
System.out.println("我是抽象父类构造方法");
}
public abstract void eat();
}
Zi类
public class Zi extends Fu{
public Zi(){
//这里有默认的super()
System.out.println("我是子类构造方法");
}
@Override
public void eat() {
System.out.println("吃饭");
}
}
Main类
public class Main {
public static void main(String[] args) {
Zi zi = new Zi();
zi.eat();
}
}
运行结果
3.抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类
MyAbstract类
//一个抽象类不一定含有抽象方法
public abstract class MyAbstract {
}
4.抽象类的子类,必须重写抽象父类中所有的抽象方法,当然你也可以让该子类成为抽象类
Animal抽象类
public abstract class Animal {
public abstract void eat(); //吃
public abstract void cry();//叫
}
Dog抽象类
//这里我只重写抽象父类的eat()抽象方法,不想重写cry()方法,那么你就必须把这个类变为抽象类
public abstract class Dog extends Animal{
@Override
public void eat() {
System.out.println("狗吃骨头");
}
}
GoldenDog类
//因为Dog是抽象类而GoldenDog不是抽象类,所以必须重写Dog中的抽象方法,也就是Dog没有重写的抽象父类的抽象方法,已经重写的就不用了
public class GoldenDog extends Dog{
@Override
public void cry() {
System.out.println("wuwuwu");
}
}
HuskyDog类
//因为Dog是抽象类而HuskyDog不是抽象类,所以必须重写Dog中的抽象方法,也就是Dog没有重写抽象父类的抽象方法,已经重写的就不用了
public class HuskyDog extends Dog{
@Override
public void cry() {
System.out.println("enenen");
}
}
Main类
public class Main {
public static void main(String[] args) {
//Animal animal = new Animal(); //不可以直接new对象,Animal是抽象类
//Dog dog = new Dog(); //不可以直接new对象,Dog是抽象类
GoldenDog goldenDog = new GoldenDog(); //可以直接new对象,GoldenDog是普通类
goldenDog.eat();
goldenDog.cry();
System.out.println("---------------------");
HuskyDog huskyDog = new HuskyDog(); //可以直接new对象,HuskyDog是普通类
huskyDog.eat();
huskyDog.cry();
}
}
运行结果
在不断学习的过程中,不妨回过头去看看以前学的一些基础知识,你会有不一样的收获,比如我,刚开始学Java基础知识时,抽象类和抽象方法我就挺懵逼的,现在再回过头看一遍,一下子就通了。由于时间有限,今天我就只写这一点,还有很多我都想自己亲自写一遍,有时间了必定与大家分享



