【JAVA语言成长之路 —— 抽象类】

发布于:2022-12-02 ⋅ 阅读:(151) ⋅ 点赞:(0)

【JAVA语言成长之路 —— 抽象类】

语法规则

1、包含抽象方法的类,叫做抽象类

abstract class Shape{
    public abstract void draw();  //抽象方法
}

如果一个方法不想要具体的实现可以用abstract修饰

2、对于包含抽象方法的类, 必须加上 abstract 关键字表示这是一个抽象类.

abstract class Shape{
    public abstract void draw();  //抽象方法
}

如果一个方法不想要具体的实现可以用abstract修饰

3、抽象类是不可以被实例化的

在这里插入图片描述

4、因为不能被实例化,所以,这个抽象类,其实只能被继承

abstract class A{
    public abstract void draw();  //抽象方法
}
class B extends A{
    @Override
    public void draw() {
        System.out.println("🔺");
    }
}

1、继承需要用extends关键字修饰
2@Override表示注释重写的意思
3、普通B类继承抽象A类,需要重写抽象方法

5、抽象类当中,也可以包含,和普通类一样的成员和方法

abstract class A{
    public int a;
    public void func(){
        System.out.println("测试普通方法!");
    }
    public abstract void draw();  //抽象方法
}

6、一个普通类,继承了一个抽象类,那么这个普通类当中,需要重写这个抽象类的所有的抽象方法

abstract class A{
    public int a;
    public void func(){
        System.out.println("测试普通方法!");
    }
    public abstract void draw1();  //抽象方法
    public abstract void draw2();
}
class B extends A{
    @Override
    public void draw1() {
        System.out.println("6666");
    }

    @Override
    public void draw2() {
        System.out.println("8888");
    }
}
如果没有重写全的话,JAVA编译器会出现红色波浪线提示你代码有问题!

7、抽象类最大的作用,就是为了被继承
在这里插入图片描述
这个过程实现了向上转型和动态绑定

8、抽象类A,如果继承了一个抽象类B,那么这个抽象类A,可以不现实抽象父类B的抽象方法

abstract class A{
    public int a;
    public void func(){
        System.out.println("测试普通方法!");
    }
    public abstract void draw1();  //抽象方法
}
abstract class B extends A{
    
}abstract修饰之后的类继承一个抽象类,可以不重写!

9、结合第8点,当A类再次被一个普通类继承后,那么A和B这两个抽象类当中的抽象方法,必须重写
在这里插入图片描述
红色波浪线表示代码报错,原因的普通类继承抽象类,需要重写全部的抽象方法
在这里插入图片描述
把A和B的抽象方法重写,红色波浪线就会消失,代码没有报错

10、抽象类不能被 final 修饰,抽象方法也不可以被 final 修饰
在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到