java中抽象类和抽象方法到底有什么用呢?

本文探讨了抽象类和抽象方法的设计初衷及其应用场景。通过举例说明,在设计通用类如“车”时,若不确定具体子类形式,则可以使用抽象类避免直接实例化,并通过抽象方法确保所有子类实现特定功能。

抽象类和抽象方法有什么用呢?马克-to-win:当初sun公司为什么要设计抽象类和抽象方法呢?当你在做车的系统设计时,当你设计车这个通用类时,假如你确认别人实例化车这个通用类没有意义时(不知道是bike还是豪华轿车),你就坚决的在车这个通用类的类名前冠以abstract,将来就没人能实例化车这个类了。进一步讲:因为你不知道是什么车?所以你不知道如何驾驶,是拐把?还是方向盘?但你知道不管是什么车都得驾驶。所以你写个驾驶steer方法,冠以abstract,这样后来的子类,必须得把这个抽象方法实现掉。通过这种方法,你做架构设计的人就规定了后人的行为:必须得把驾驶这个抽象方法实现。

更多请见:https://blog.youkuaiyun.com/qq_44639795/article/details/103117531

 

Java 中,**抽象类(abstract class)****抽象方法(abstract method)**是面向对象编程中实现抽象封装的重要机制,它们的主要作用是为子类提供一个模板,定义一些通用的行为结构,同时强制子类实现特定的方法。 ### 一、抽象类抽象方法作用 #### 1. 抽象类(abstract class) - 抽象类是不能被实例化的类。 - 它可以包含抽象方法具体方法。 - 抽象类用于作为多个子类的公共父类,定义一些通用的行为属性。 #### 2. 抽象方法(abstract method) - 抽象方法是没有实现(方法体)的方法。 - 抽象方法必须在抽象类中声明。 - 子类必须实现(重写)所有抽象方法,除非子类也声明为抽象类。 --- ### 二、使用场景示例代码 #### 示例:动物类(Animal)作为抽象类,定义一个抽象方法 makeSound() ```java // 抽象类 abstract class Animal { // 抽象方法 public abstract void makeSound(); // 具体方法 public void sleep() { System.out.println("Animal is sleeping."); } } // 子类 Dog 继承 Animal 并实现抽象方法 class Dog extends Animal { @Override public void makeSound() { System.out.println("Dog barks."); } } // 子类 Cat 继承 Animal 并实现抽象方法 class Cat extends Animal { @Override public void makeSound() { System.out.println("Cat meows."); } } // 测试类 public class Main { public static void main(String[] args) { Animal myDog = new Dog(); Animal myCat = new Cat(); myDog.makeSound(); // 输出: Dog barks. myDog.sleep(); // 输出: Animal is sleeping. myCat.makeSound(); // 输出: Cat meows. myCat.sleep(); // 输出: Animal is sleeping. } } ``` #### 解释: - `Animal` 是一个抽象类,不能被实例化。 - `makeSound()` 是一个抽象方法,表示所有子类都必须实现这个方法。 - `sleep()` 是一个具体方法,子类可以直接继承。 - `Dog` `Cat` 是 `Animal` 的具体子类,它们实现了 `makeSound()` 方法。 - 在 `Main` 类中,我们通过多态调用 `makeSound()`,实现不同子类的特有行为。 --- ### 三、抽象类 vs 接口(interface) | 特性 | 抽象类 | 接口 | |------|--------|------| | 构造函数 | 有 | 无 | | 成员变量 | 可以有普通变量 | 默认是 `public static final` | | 方法实现 | 可以有具体方法 | Java 8+ 之前只有抽象方法Java 8+ 支持默认方法静态方法 | | 继承关系 | 单继承 | 多继承 | | 使用场景 | 表示 "is-a" 关系,共享代码逻辑 | 表示 "can-do" 关系,定义行为规范 | --- ### 四、为什么使用抽象类? 1. **代码复用**:可以定义通用的方法属性供子类复用。 2. **约束子类行为**:通过抽象方法要求子类必须实现某些方法。 3. **设计模板**:提供一个类的框架,子类只需关注具体实现。 4. **多态支持**:可以通过父类引用调用子类对象的方法。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mark_to_win

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值