java面向对象(抽象)
文章内容发布于 30 天前;最后修改于 30 日前。其中的信息可能发生变化或产生更改,敬请留意。

java面向对象(抽象)

抽象类和抽象方法

抽象类

抽象类:如果一个类中存在抽象方法,则该类必须声明为抽象类。如果类中没有抽象方法,则该类也可以申明为抽象类。

抽象类的定义格式<权限修饰符> abstract <返回值类型> class <类名> {<方法体>}

抽象类的注意事项

  • 抽象类不能创建对象(实例化);
  • 抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类;
  • 抽象类可以有构造方法;
  • 抽象类子类:
    • 抽象类的子类重写父类(抽象类)中的所有抽象方法。
    • 抽象类的子类本身也是抽象类。

抽象方法

抽象方法:将子类中共性的方法抽取到父类之后,由于每一个子类执行的方法体不一样,所以在父类中不能确认具体的方法体,则该方法可以被定义为抽象方法。

抽象方法的定义格式<权限修饰符> abstract <返回值类型> <方法名>(<形参列表>);

代码

public class OOPAbstract {
    public static void main(String[] args) {
        Cat cat = new Cat();
        cat.play();
        Dog dog = new Dog();
        dog.play();
    }
}
abstract class Animal{
    public abstract void play();
}
class Dog extends Animal{
    @Override
    public void play() {
        System.out.println("狗摇尾巴");
    }
}
class Cat extends Animal{
    @Override
    public void play() {
        System.out.println("猫舔毛");
    }
}

抽象类不能创建对象(实例化)

抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类

抽象类中不一定有抽象方法

有抽象方法的类一定是抽象类

抽象类可以有构造方法

抽象类虽然不能直接实例化,但它的构造方法会在子类实例化时被调用,主要用于:

  1. 初始化抽象类中定义的成员变量
  2. 执行抽象类中必要的初始化逻辑
  3. 强制子类通过特定方式初始化父类状态

构造方法调用顺序

  • 创建子类对象时,先调用父类构造方法,再调用子类构造方法
  • 子类构造方法中必须通过super()显式或隐式调用父类构造方法

抽象的意义

将方法体不同的成员方法抽象,则子类必须重写对应的方法,形式参数和返回值必须完全相同,这样有利于:强制规范与约束提高代码的可扩展性实现多态,提高代码灵活性

  1. 标准化接口:确保所有子类都有相同的方法签名
  2. 强制实现:避免子类遗漏重要功能的实现
  3. 易于扩展:新增功能只需添加新的子类
  4. 代码复用:公共逻辑在抽象类中实现,避免重复代码
  5. 解耦合:使用抽象类型引用,降低模块间依赖
文章「java面向对象(抽象)」,由本站用户「admin」发布。文章仅代表admin观点,不代表本站立场。
页面网页地址「https://xiaozhiyuqwq.top/p/2889」。
如您对文章及其附件提出版权主张,或进行引用转载等,请查看我们的【版权声明】
本页面暂时没有评论......

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇