回顾封装、继承和多态的概念,并给出相关示例

封装、继承和多态是面向对象编程(OOP)的三个核心概念。下面我将分别解释这些概念,并给出相应的示例。

封装

概念:封装是将数据(变量)和操作数据的方法(函数)组合到一个类中,并通过访问修饰符(如public、private、protected)来限制对数据的访问级别。封装可以隐藏类的内部实现细节,只提供必要的接口与外部交互,从而增强代码的安全性和可维护性。

示例

|---|------------------------------------------|
| | public class Person { |
| | 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) { |
| | this.age = age; |
| | } |
| | } |

继承

概念:继承允许我们创建一个新的类(子类或派生类),它继承自一个已存在的类(父类或基类)的属性和方法。子类可以添加新的属性和方法,也可以重写父类的方法。继承提高了代码的复用性,使得代码更加易于维护和管理。

示例

|---|--------------------------------------------------------|
| | public class Animal { |
| | void eat() { |
| | System.out.println("Animal eats"); |
| | } |
| | } |
| | |
| | public class Dog extends Animal { // Dog类继承自Animal类 |
| | void bark() { |
| | System.out.println("Dog barks"); |
| | } |
| | |
| | // 重写父类的eat方法 |
| | @Override |
| | void eat() { |
| | System.out.println("Dog eats dog food"); |
| | } |
| | } |

多态

概念:多态是指同一操作作用于不同的对象,可以有不同的解释和执行结果。在Java中,多态主要通过方法的重写(Override)和重载(Overload)来实现。同时,多态也体现在父类引用指向子类对象时,可以调用子类重写后的方法。

示例(重写导致多态):

|---|-----------------------------------------------------------|
| | public class Main { |
| | public static void main(String[] args) { |
| | Animal animal = new Dog(); // 父类引用指向子类对象 |
| | animal.eat(); // 输出 "Dog eats dog food",因为Dog类重写了eat方法 |
| | } |
| | } |

示例(重载导致多态,但重载通常不直接涉及子类与父类的关系):

|---|-----------------------------------------------------------|
| | public class Calculator { |
| | // 重载add方法,接受两个int参数 |
| | int add(int a, int b) { |
| | return a + b; |
| | } |
| | |
| | // 重载add方法,接受两个double参数 |
| | double add(double a, double b) { |
| | return a + b; |
| | } |
| | |
| | public static void main(String[] args) { |
| | Calculator calc = new Calculator(); |
| | int sum1 = calc.add(2, 3); // 调用int版本的add方法 |
| | double sum2 = calc.add(2.5, 3.5); // 调用double版本的add方法 |
| | System.out.println("Sum1: " + sum1); // 输出 "Sum1: 5" |
| | System.out.println("Sum2: " + sum2); // 输出 "Sum2: 6.0" |
| | } |
| | } |

以上示例展示了面向对象编程中封装、继承和多态的基本概念及其用法。

相关推荐
每天都要加油呀!2 分钟前
多租户中间件适配
java·多租户
老陈说编程25 分钟前
12. LangChain 6大核心调用方法:invoke/stream/batch同步异步全解析,新手也能轻松学会
开发语言·人工智能·python·深度学习·机器学习·ai·langchain
014-code33 分钟前
Java 并发中的原子类
java·开发语言·并发
alphageek836 分钟前
Matlab linspace函数完全指南:从基础用法到进阶技巧
开发语言·其他·matlab
AI人工智能+电脑小能手36 分钟前
【大白话说Java面试题】【Java基础篇】第29题:静态代理和动态代理的区别是什么
java·开发语言·后端·面试·代理模式
善恶怪客36 分钟前
Java-数组和可变参数
java·开发语言
小编码上说37 分钟前
LSH(局部敏感哈希)分桶,海量数据下的相似性搜索解决方案
java·spring boot·缓存·langchain4j·lsh·局部敏感哈希·ai调用优化
谭欣辰42 分钟前
LCS(最长公共子序列)详解
开发语言·c++·算法
RPGMZ1 小时前
RPGMakerMZ 地图存档点制作 标题继续游戏直接读取存档
开发语言·javascript·游戏·游戏引擎·rpgmz·rpgmakermz
计算机_毕业设计1 小时前
java-springboot数字藏品系统 基于 SpringBoot 的区块链数字艺术品交易平台 Java 微服务架构下的加密藏品展示与拍卖系统计算机毕业设计
java·spring boot·课程设计