强哥说Java--Java的抽象类(1)

本文解释了抽象类在编程中的作用,尤其是在父类方法可能因子类差异而无需在父类中具体实现时。抽象类提供了一种约束子类设计并避免无意义实例化的机制,同时介绍了抽象方法的声明与实现要求。
摘要由CSDN通过智能技术生成

2. 为什么需要抽象类


老是在想为什么要引用抽象类,一般类不就够用了吗。一般类里定义的方法,子类也可以覆盖,没必要定义成抽象的啊。

其实不是说抽象类有什么用,一般类确实也能满足应用,但是现实中确实有些父类中的方法确实没有必要写,因为各个子类中的这个方法肯定会有不同,所以没有必要再父类里写。当然你也可以把抽象类都写成非抽象类,但是这样没有必要。

而写成抽象类,这样别人看到你的代码,或你看到别人的代码,你就会注意抽象方法,而知道这个方法是在子类中实现的,所以,有个提示作用。

例如,父类 Pet 被子类 CatDog 继承,并且都重写了父类的 eat 方法:

class Pet {

// 定义方法 eat

public void eat() {

System.out.println(“宠物都会吃东西”);

}

}

class Dog extends Pet { // 继承父类

// 重写父类方法 eat

@Override

public void eat() {

System.out.println(“狗狗吃狗粮”);

}

}

class Cat extends Pet { // 继承父类

// 重写父类方法 eat

@Override

public void eat() {

System.out.println(“猫猫吃猫粮”);

}

}

小猫类、小狗类这些子类都重写了宠物类中的 eat 方法,我们知道每种宠物都有吃的行为,宠物表示了一个抽象的概念。那么宠物类的实例化和方法调用就没有了实际意义:

Pet pet = new Pet();

pet.eat();

我们知道了抽象类不能被实例化,此时可以将父类设定为抽象类,使用 abstract 关键字来声明抽象类,abstract 关键字必须放在 class 关键字前面 :

// 声明抽象类

abstract class Pet {

}

如果你尝试实例化抽象类 Pet,编译器将会报错:

Pet.java:4: 错误: Pet是抽象的; 无法实例化

new Pet();

^

1 个错误

使用抽象类,我们既可以通过父类和子类的继承关系,来限制子类的设计随意性,也可以避免父类的无意义实例化。

3. 抽象方法


如果你想设计这样一个类,该类包含一个特别的成员方法,该方法的具体实现由它的子类确定,那么你可以在父类中声明该方法为抽象方法。

Abstract 关键字同样可以用来声明抽象方法,抽象方法只包含一个方法名,而没有方法体。

抽象方法没有定义,方法名后面直接跟一个分号,而不是花括号。

上面我们将 Pet 父类改为了抽象类,其中包含了 eat 方法的具体实现,而实际上这个方法是不需要具体实现的,每种宠物都有各自的具体实现。此时,就可以将 eat 方法改为抽象方法:

abstract class Pet {

abstract void eat();

}

我们可以看到抽象方法使用 abstract 关键字声明,它没有方法体,而直接使用 ; 结尾。

子类必须实现父类中的抽象方法,假如 Dog 类继承了抽象类 Pet,但没有实现其抽象方法 eat

class Dog extends Pet {

}

最后

总而言之,面试官问来问去,问的那些Redis知识点也就这么多吧,复习的不够到位,知识点掌握不够熟练,所以面试才会卡壳。将这些Redis面试知识解析以及我整理的一些学习笔记分享出来给大家参考学习

还有更多学习笔记面试资料也分享如下:

都是“Redis惹的祸”,害我差点挂在美团三面,真是“虚惊一场”

et {

}

最后

总而言之,面试官问来问去,问的那些Redis知识点也就这么多吧,复习的不够到位,知识点掌握不够熟练,所以面试才会卡壳。将这些Redis面试知识解析以及我整理的一些学习笔记分享出来给大家参考学习

还有更多学习笔记面试资料也分享如下:

[外链图片转存中…(img-LVKUpi6R-1714696775089)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值