当前位置: 首页 > news >正文

Java面向对象的三大特性

## 1. 封装(Encapsulation)

封装是将数据和操作数据的方法绑定在一起,对外部隐藏对象的具体实现细节。通过访问修饰符来实现封装。

  

示例代码:

  

```java

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 && age < 120) {

            this.age = age;

        }

    }

}

```

  

## 2. 继承(Inheritance)

继承允许我们创建一个类作为另一个类的基础,继承父类的属性和方法。

  

示例代码:

  

```java

// 父类

public class Animal {

    protected String name;

    public void eat() {

        System.out.println(name + "正在吃东西");

    }

}

  

// 子类

public class Dog extends Animal {

    public Dog(String name) {

        this.name = name;

    }

    public void bark() {

        System.out.println(name + "在汪汪叫");

    }

}

```

  

## 3. 多态(Polymorphism)

多态允许我们以不同的方式执行同一个操作,包括方法重写(运行时多态)和方法重载(编译时多态)。

  

示例代码:

  

```java

// 父类

public class Shape {

    public double getArea() {

        return 0;

    }

}

  

// 子类1

public class Circle extends Shape {

    private double radius;

    public Circle(double radius) {

        this.radius = radius;

    }

    @Override

    public double getArea() {

        return Math.PI * radius * radius;

    }

}

  

// 子类2

public class Rectangle extends Shape {

    private double width;

    private double height;

    public Rectangle(double width, double height) {

        this.width = width;

        this.height = height;

    }

    @Override

    public double getArea() {

        return width * height;

    }

}

  

// 使用多态

public class Main {

    public static void main(String[] args) {

        Shape circle = new Circle(5);

        Shape rectangle = new Rectangle(4, 6);

        System.out.println("圆的面积:" + circle.getArea());

        System.out.println("矩形的面积:" + rectangle.getArea());

    }

}
 

http://www.xdnf.cn/news/77833.html

相关文章:

  • CAD在线查看免费,可以支持DWG/GLB/GLTF/doc/wps/pdf/psd/eml/zip, rar/MP3/MP4/svg/OBJ/FBX格式
  • 代理设计模式:从底层原理到源代码的详细解释
  • 性能比拼: Redis vs Dragonfly
  • 机器学习第一篇 线性回归
  • 《剥开卷积神经网络CNN的 “千层酥”:从基础架构到核心算法》
  • Prompt工程:大模型的「精准导航系统」
  • 从零开始构建微博爬虫与数据分析系统
  • WebRTC服务器Coturn服务器部署
  • Java求职面试:从Spring Boot到微服务的全面考核
  • 静态时序分析STA——8.6-7 时序检查(撤销时间和恢复时间)
  • 【系统架构设计师】嵌入式微处理器
  • 云原生--基础篇-4--CNCF-1-云原生计算基金会(云原生生态发展和目标)
  • 3、有Bluetooth,LCD,USB,SD卡,PSRAM,FLASH、TP等软硬件驱动开发经验优先考虑
  • ffmpeg av_buffer_unref的逻辑实现; av_freep 和 av_freep函数的区别
  • Vue3+TS中svg图标的使用-@unocss/preset-icons
  • Java面试实战:从Spring Boot到微服务的深入探讨
  • 云账号安全事件应急响应指南:应对来自中国IP的异常访问
  • 测试OMS(订单管理系统)时,对Elasticsearch(ES)数据和算法数据进行测试(如何测试几百万条数据)
  • 画布交互系统深度优化:从动态缩放、小地图到拖拽同步的全链路实现方案
  • js原型链prototype解释
  • 利用java语言,怎样开发和利用各种开源库和内部/自定义框架,实现“提取-转换-加载”(ETL)流程的自动化
  • 01.浏览器自动化webdriver源码分析之启动函数
  • 基于Python+Pytest实现自动化测试(全栈实战指南)
  • 热敏电阻的应用说明
  • Rest Client插件写http文件直接发送请求
  • 复盘20250422
  • Maven集成模块打包使用
  • Shell脚本中的字符串截取和规则变化
  • RockChip Android14 修改LCD背光最大值
  • B + 树与 B 树的深度剖析