什么是抽象类?
- 再Java中有一个关键字叫:abstract,他就是抽象类的意思,可以用它修饰类、成员方法
- abstract修饰类,这个类就是抽象类;修饰方法,这个方法就是抽象方法
抽象类的注意事项、特点
- 抽象类不一定有抽象方法,由抽象方法的类一定就是抽象类
public abstract void run();
- 类该有的成员(成员变量,方法、构造器)抽象类都可以有
public A() {
}
public A(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static String getSchoolName() {
return schoolName;
}
public static void setSchoolName(String schoolName) {
A.schoolName = schoolName;
}
- 抽象类最主要的特点:抽象类不能创建对象,仅作为一种特殊的父类,让子类继承并实现
package com.zzfeng.d4_abstract;
public class Test {
public static void main(String[] args) {
}
}
- 一个类继承抽象类,必须重写完抽象类的全部抽象方法,否则这个类也必须定义成抽象类
package com.zzfeng.d4_abstract;
public class B extends A {
@Override
public void run() {
}
}
使用抽象类的好处
- 示例代码
![在这里插入图片描述](https://img-blog.csdnimg.cn/5b5a5d33b9e24572a7a85f0afd0f2906.png)
package com.zzfeng.d5_abstract2;
public abstract class Animal {
private String name;
public abstract void cry();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package com.zzfeng.d5_abstract2;
public class Cat extends Animal {
@Override
public void cry() {
System.out.println(getName() + "喵喵叫~~");
}
}
package com.zzfeng.d5_abstract2;
public class Dog extends Animal {
@Override
public void cry() {
System.out.println(getName() + "汪汪叫~~");
}
}
package com.zzfeng.d5_abstract2;
public class Test {
public static void main(String[] args) {
Animal a = new Dog();
a.setName("狗");
a.cry();
}
}