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

【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 修饰
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值