在面对对象的概念中,所以的对象都是通过类来描述的,而普通的类是一个完善的功能类,可以直接实例化对象
并且在类中可以包含常量、成员变量(属性)、成员方法、构造方法等内容
抽象类和普通类不一样的是,抽象类当中可以包含抽象方法
抽象方法是指没有具体实现方法的内容,同时抽象方法必须使用abstract
关键字来修饰
例如:
抽象类的语法形式:
一个类如果被 abstract
修饰就被称为抽象类
抽象类中使用 abstract
修饰的方法称为抽象方法,抽象方法可以不用给出具体的实现
// 抽象类必须使用 abstract 关键字来修饰
abstract class A{
// 抽象类也是类,里面可以包含普通方法、属性、构造方法
int a;
//普通的方法
public void fun(){
System.out.println("方法具体实现的内容");
}
//抽象方法 没有具体实现的内容 并且要用 abstract 来修饰
public abstract void fun1();
}
例如:把上面创建的抽象类进行实例化
public static void main(String[] args) {
A a = new A();
}
结果:
由于A是抽象类,所以不能实例化,编译器会报错
private
的注意:是抽象方法
不能是 private(私有)
的权限
抽象方法没有加访问限定符时,默认是public
final
和static
修饰,因为抽象方法要被子类重写
abstract
修饰```java
//定义的 抽象类
abstract class A{
// 构造方法,用来显示执行的顺序
public A(){
System.out.println("正在执行A类的构造方法");
}
// 定义的 抽象方法
public abstract void fun();
}
class B extends A{
// 构造方法,用来显示执行的顺序
public B(){
System.out.println("正在执行B类的构造方法");
}
@Override
public void fun() {
//必须重写抽象类的方法
System.out.println("Hello China!");
}
}
public class Test {
public static void main(String[] args) {
A a = new B(); // 向上转型
}
}
使用抽象类来实现一个程序,可以实现三种不同事物的行
三种的事物为:
孩子:吃饭、去学校学习知识、睡觉
父亲:吃饭、上班工作、睡觉
母亲:吃饭、做家务、睡觉
抽象类
// 抽象类
abstract class Action{
// 抽象方法
public abstract void eat(); // 吃饭
public abstract void sleep(); // 睡觉
public abstract void action(); //行为
}
// 定义一个孩子的类
class Child extends Action{
// 他的行为
@Override
public void eat() {
System.out.println("孩子:吃饭!");
}
@Override
public void action() {
System.out.println("孩子:去学校学习知识!");
}
@Override
public void sleep() {
System.out.println("孩子:睡觉!");
}
}
// 定义一个 父亲 的类
class Dod extends Action{
// 他的行为
@Override
public void eat() {
System.out.println("父亲:吃饭!");
}
@Override
public void action() {
System.out.println("父亲:上班工作!");
}
@Override
public void sleep() {
System.out.println("父亲:睡觉!");
}
}
// 定义一个 母亲 的类
class Mom extends Action{
// 他的行为
@Override
public void eat() {
System.out.println("母亲:吃饭!"