首页 > 其他分享 >封装,继承,多态

封装,继承,多态

时间:2025-01-14 19:33:39浏览次数:3  
标签:封装 name 继承 子类 多态 父类 方法 public

在 Java 中,封装继承多态是面向对象编程(OOP)的三大核心特性。它们共同构成了面向对象编程的基础,帮助开发者编写出模块化、可重用和可扩展的代码。以下是它们的详细讲解:


1. 封装(Encapsulation)

定义

封装是指将对象的属性和行为(方法)包装在一起,并对外隐藏内部实现细节,只暴露必要的接口供外部访问。

目的:为了保证属性取值的合理性

  • 隐藏实现细节:外部不需要知道对象内部的具体实现,只需知道如何使用。

  • 提高安全性:通过访问控制修饰符(如 privateprotectedpublic),限制对对象属性的直接访问。

  • 增强可维护性:修改内部实现时,不会影响外部代码。

实现方式

  • 使用 private 修饰属性,限制外部直接访问。

  • 提供 public 的 getter 和 setter 方法,用于访问和修改属性。

示例


public class Student {
    // 私有属性
    private String name;
    private int age;

    // 公共的getter和setter方法
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        if (age > 0) { // 数据校验
            this.age = age;
        }
    }
}
  • 优点

    • 外部无法直接修改 name 和 age,必须通过 setter 方法。

    • 可以在 setter 方法中添加数据校验逻辑。


2. 继承(Inheritance)

定义

继承是指一个类(子类)可以继承另一个类(父类)的属性和方法,从而实现代码的重用和扩展。

目的

  • 代码重用:子类可以直接使用父类的属性和方法,无需重复编写。

  • 扩展功能:子类可以在继承的基础上添加新的属性和方法,或重写父类的方法。

实现方式

  • 使用 extends 关键字实现继承。

  • 子类可以访问父类的 public 和 protected 成员,但不能访问 private 成员。

示例

// 父类
class Animal {
    protected String name;

    public void eat() {
        System.out.println(name + " is eating.");
    }
}

// 子类
class Dog extends Animal {
    public void bark() {
        System.out.println(name + " is barking.");
    }
}

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.name = "Buddy"; // 访问父类的属性
        dog.eat();  // 调用父类的方法
        dog.bark(); // 调用子类的方法
    }
}

  • 输出

  • 特点

    • 子类可以重写父类的方法(方法重写)。

    • Java 只支持单继承,即一个子类只能有一个父类。


3. 多态(Polymorphism)

定义

多态是指同一个方法在不同对象中有不同的实现方式。多态分为两种:

  • 编译时多态:方法重载(Overloading)。

  • 运行时多态:方法重写(Overriding)。

目的

  • 提高灵活性:同一个方法可以根据对象的不同表现出不同的行为。

  • 增强可扩展性:新增子类时,无需修改现有代码。

实现方式

  • 方法重写(Override):子类重写父类的方法。

  • 向上转型(Upcasting):将子类对象赋值给父类引用。

  • 动态绑定:在运行时根据对象的实际类型调用相应的方法。

示例

// 父类
class Animal {
    public void makeSound() {
        System.out.println("Animal is making a sound.");
    }
}

// 子类
class Dog extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Dog is barking.");
    }
}

class Cat extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Cat is meowing.");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal myAnimal = new Animal(); // 父类对象
        Animal myDog = new Dog();       // 向上转型
        Animal myCat = new Cat();       // 向上转型

        myAnimal.makeSound(); // 调用父类的方法
        myDog.makeSound();    // 调用子类 Dog 的方法
        myCat.makeSound();    // 调用子类 Cat 的方法
    }
}
  • 输出

  • 特点

    • 运行时多态通过方法重写和向上转型实现。

    • 动态绑定确保调用的是子类重写的方法。


4. 三者的关系

  • 封装:隐藏实现细节,提供清晰的接口。

  • 继承:实现代码重用和扩展。

  • 多态:提高代码的灵活性和可扩展性。


5. 总结

  • 封装:通过访问控制修饰符隐藏内部细节,提供安全的访问方式。

  • 继承:通过 extends 实现代码重用和扩展。

  • 多态:通过方法重写和向上转型实现同一方法的不同行为。

标签:封装,name,继承,子类,多态,父类,方法,public
From: https://blog.csdn.net/m0_73941339/article/details/145145549

相关文章

  • Java程序基础⑦Java继承和多态
    目录1.继承1.1引入继承1.2继承的概念和语法1.3父类成员访问1.4super关键字1.5 子类构造方法1.6继承时的初始化1.7 继承的方式1.8final关键字2.多态2.1多态的概念2.2多态的实现条件2.3重写2.4向上转型和向下转型2.4.1向上转型2.4.2向下转型2.5......
  • Django Admin 自定义操作封装
    1.为什么需要封装?在Django开发中,我们经常需要在Admin界面添加自定义操作按钮,以便管理员执行特定的任务。通过封装,我们可以:减少重复代码统一管理自定义操作的逻辑提高代码的可维护性和可扩展性©ivwdcwso(ID:u012172506)2.CustomActionMixin的实现让我们看看C......
  • 继承(8)
    大家好,今天我们来学习一下继承方式相关的知识,有助于我们对java的继承有更深的了解,话不多说,来看。1.10继承方式在现实生活中,事物之间的关系是非常复杂,灵活多样。 Java中支持以下几种继承方式:单继承:  多层继承: 不同类继承同一个类:  多继承(不支持):   ......
  • java的多态
    java的多态:多态时面对对象的第三大特征;方法的多态:方法的重载【本质:方法是由方法名+形参标识】和重写【本质是继承,实现】;对象的多态:一个对象的声明类型【编译类型】和运行类型可以不一致,这个是多态的本质;赋值符号左边是声明类型,右边是实际运行;为什么有多态:因为子类继承了......
  • 方法重写和多态
    3.多态:父类的引用指向子类的对象方法的重写:子类对父类方法的重写定义:方法重写是子类重新定义继承自父类的方法,并提供自己版本的实现。子类方法名、返回值类型和参数列表必须与父类的被重写方法完全一致。特点:方法名相同:子类方法必须与父类方法的名称相同。参数列表相同......
  • 继承+super
    2.继承继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模。◆extends的意思是“扩展”。子类是父类的扩展。◆JAVA中类只有单继承,没有多继承!父类Personpackagecom.oop.demo02;//是学生、老师类的父类//子类可以继承父类方法和属性(public)/**public*protect......
  • 封装
    1.封装◆该露的露,该藏的藏◆我们程序设计要追求“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成,不 允许外部干涉;低耦合:仅暴露少量的方法给外部使用。◆封装(数据的隐藏)◆通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏。......
  • 安装MM系统(使用systemback封装Ubuntu系统iso镜像)
    哈喽啊亲们!今天又是阳光明媚的一天,不知道亲们想me了没,今天小橘给大家分享一下MM系统镜像的封装流程,欢迎大家一起探讨。一、安装MM系统到其他机器的硬盘上(一)BMC挂载镜像设置--一般--媒体重定向设置--一般设置--远程媒体支持--挂载CD/DVD--填写信息--保存--选择镜像--......
  • CSS选择器有哪些?哪些属性可以继承?
    CSS选择器有多种类型,包括但不限于以下几种:元素选择器:根据HTML元素的标签名来选择元素,例如p选择器会选择所有的段落元素。类选择器:使用.来选择具有特定类的元素,例如.my-class会选择所有类名为my-class的元素。ID选择器:使用#来选择具有特定ID的元素,例如#my-id会选择ID为my-......
  • 数据结构C语言描述11(图文结合)--二叉搜索树(BST树)的实现(数据采用KV存储形式进行封
    前言这个专栏将会用纯C实现常用的数据结构和简单的算法;有C基础即可跟着学习,代码均可运行;准备考研的也可跟着写,个人感觉,如果时间充裕,手写一遍比看书、刷题管用很多,这也是本人采用纯C语言实现的原因之一;欢迎收藏+关注,本人将会持续更新。文章目录什么是二叉搜索树代码实......