抽象类与抽象方法复习(java)

为什么使用抽象类抽象方法

比如以下代码,chinese 用国粹输出,american用美国话输出,但是Person不知道用什么话输出,这里就可以把它变成抽象方法,声明为抽象类。

abstract class Person {
    void speak() {
        System.out.println("人在输出");
    }
    //speak方法变成抽象方法: abstract void speak();
}

class chinese extend Person{
	@Override
    void speak() {
        System.out.println("中国人在用国粹输出");
    }
}

class American extend Person{
	@Override
    void speak() {
        System.out.println("美国人在用美国话输出");
    }
}


抽象方法

  1. 抽象方法必须要被子类重写,

在这里插入图片描述

  1. 抽象方法,不能有方法体

在这里插入图片描述

  1. 抽象方法不能被 static,final,private 修饰

在这里插入图片描述

个人理解

前面两条感觉没什么好说的,主要是最后一条。

先说 为什么不能被 static 修饰:我是这样理解的,因为 static 是依赖于类的,是这个类专属的。假如你可以在父类写一个 static 抽象类,子类也写一个同名的。它们的关系不是重写。相当于两个同名的方法,只不过隶属于两个不同的类,因为上面说过 static 是依赖于类的。

再说:为什么不能被 private 修饰:在父类如果有 private 方法,子类根本就看不到父类这个方法。不像 private 属性虽然继承下来了,但是隐藏了。这里要把属性和方法区分开。因为子类根本看不见,所以你在子类中再创建一个同名的方法,他也是和上面static 一样相当于两个同名的方法,只不过隶属于两个不同的类

最后:为什么不能被 final 修饰:final 就很好理解,final 修饰的类不能被重写,这里与 抽象类一定要重写相违背了。



抽象类

  1. 抽象类里面可以没有抽象方法

在这里插入图片描述

  1. 类中如果有抽象方法,那么这个类一定要声明为抽象类

在这里插入图片描述

  1. 抽象类不能被实例化

在这里插入图片描述

个人理解

感觉只有第二条可以说点东西
为什么类中有抽象方法,这个类一定要声明为抽象类:因为如果不声明为抽象类,可以实例化对象,假如你给Person类不抽象,方法抽象,那Person到底抽不抽像,总感觉很怪。而且你Person类不抽象的话,你就可以实例化对象,你就可以调用抽象方法,而抽象方法,都没有方法体。这就很难搞了。所以类中有抽象方法,类一定要声明为抽象类



个人觉得要注意的点

  1. 子类要重写父类中所有抽象类
  2. 抽象类也是类,类该有的它都可以有
  3. 有抽象类 一定 要 声明为抽象方法; 而抽象类,不一定 要有抽象方法


大一牛马一只。水平有限,博客主要用来复习,以上知识如果有漏掉,或者错误的话,欢迎评论区留言,鞭打我

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值