Java——面向对象三大特性1(封装)

简介: 面向对象三大特性指的是:封装、继承、多态。这三大特性支撑了整个面向对象的理论体系,是面向对象的核心。

面向对象三大特性指的是:封装、继承、多态。这三大特性支撑了整个面向对象的理论体系,是面向对象的核心。

1 封装

class CreditCard{
    String password = “123456”;
}
public class TestCreditCard{
    public static void main(String args[]){
        CreditCard card = new CreditCard();
        System.out.println(card.password);
        card.password = “000000”;
        System.out.println(card.password);
    }
}

上述代码,创建了一个信用卡对象,并且读取、修改了这个对象的 password 属性。从 Java 基本语法上说,这并没有问题。但是对于生活来说,这就是一个大问题!对于信用卡对象而言,它的密码属性是不应该被随便访问和修改的。面向对象中解决这个问题,可以采用封装的特性。封装指的是,任何对象都应该有一个明确的边界,这个边界对对象内部的属性和方法起到保护的作用。


1.1 属性的封装


为上述的 CreditCard 的 password 属性增加 private 关键字,如下:

class CreditCard{
private String password = “123456”;
}

则原有代码中会出现编译错误:

public class TestCreditCard{
public static void main(String args[]){
    CreditCard card = new CreditCard();
    System.out.println(card.password); //编译错误
    card.password = “000000”; //编译错误
    System.out.println(card.password); //编译错误
    }
}


当为属性增加 private 之后,这个属性就成为了一个私有属性。所谓私有,指的是该属性只能在本类内部访问。


这就相当于,card 对象的边界对于 password 属性起到了保护的作用,任何试图越过边界,访问 password 属性的企图都会被阻止。


然而,对于用户而言,依然有可能要访问 CreditCard 的密码。例如,在生活中,如果忘了银行卡密码,我们可以凭借证件到银行去查询或重设密码。对于这方面的需求,我们为 CreditCard 提供一对 get/set 方法。这两个方法的修饰符为“public”。用 public 修饰的属性和方法表示“公开的”,公开属性和方法不受对象边界的限制,在类的内部和外部都可以访问。代码如下:

class CreditCard{
    private String password = “123456”;
    public void setPassword(String password){
        this.password = password;
}
    public String getPassword(){
        return this.password;
    }
}

则 TestCreditCard 类可以改成:

public class TestCreditCard{
public static void main(String args[]){
    CreditCard card = new CreditCard();
    System.out.println(card.getPassword() );
    card.setPassword(“000000”);
    System.out.println(card.getPassword());
    }
}

把属性作为私有,并提供相应的 get/set 方法,最重要的概念在于:控制。由于不能直接访问属性,而必须通过 get/set 方


法访问属性,因此可以在 get/set 方法上做手脚,来控制他人对对象属性的访问。


例如,希望 password 属性只能被获取,不能被改写。如果 password 属性用 private 修饰的话,可以只提供 get 方法而不提供 set 方法,这样 password 就成为了只读属性。而如果不把 password 做成私有,则无法达到“只读”的效果。


1.2 方法的封装


我们在设计一个类的时候,会为这个类设计很多方法。有些方法应该做成 public 方法,以供其他对象来调用,而有些方法只供自身调用,不作为对象对外暴露的功能,就应该做成private 方法。例如,一个老师对象,拥有一个“讲课”方法,这个方法必须暴露出来,供学生对象来调用(老师从来不会讲课给自己听),因此这个方法应该是公开的。同时,老师作为一个人,还拥有“消化食物”方法,这个方法只供老师自己来调用,对别人是无益的,因此,应该是一个私有方法。

class MyClass{
    public void method1(){}
    private void method2(){}
}
    public class TestPrivateMethod {
    public static void main(String[] args) {
        MyClass mc = new MyClass();
        mc.method1(); // 正确,method1方法为公开的,可以在类外面访问
        mc.method2(); // 编译失败,不能访问mc对象的私有方法
    }
}

 

相关文章
|
2月前
|
Java API 数据处理
Java新特性:使用Stream API重构你的数据处理
Java新特性:使用Stream API重构你的数据处理
|
2月前
|
Java
Java基础语法与面向对象
重载(Overload)指同一类中方法名相同、参数列表不同,与返回值无关;重写(Override)指子类重新实现父类方法,方法名和参数列表必须相同,返回类型兼容。重载发生在同类,重写发生在继承关系中。
138 1
|
2月前
|
存储 Java 关系型数据库
Java 项目实战基于面向对象思想的汽车租赁系统开发实例 汽车租赁系统 Java 面向对象项目实战
本文介绍基于Java面向对象编程的汽车租赁系统技术方案与应用实例,涵盖系统功能需求分析、类设计、数据库设计及具体代码实现,帮助开发者掌握Java在实际项目中的应用。
113 0
Java API 开发者
99 0
|
3月前
|
安全 Java 编译器
Java面向对象
本文深入讲解了Java面向对象编程(OOP)的四大特性:封装、继承、多态与抽象,以及方法的设计与使用。通过示例展示了如何用类和对象组织代码,提升程序的可维护性与扩展性。
|
4月前
|
存储 Java 测试技术
Java基础 - 面向对象
面向对象编程是Java的核心,包含封装、继承、多态三大特性。封装隐藏实现细节,提升代码可维护性与安全性;继承实现类间IS-A关系,支持代码复用;多态通过继承、重写与向上转型,实现运行时方法动态绑定,提升系统扩展性与灵活性。
|
4月前
|
并行计算 Java API
Java List 集合结合 Java 17 新特性与现代开发实践的深度解析及实战指南 Java List 集合
本文深入解析Java 17中List集合的现代用法,结合函数式编程、Stream API、密封类、模式匹配等新特性,通过实操案例讲解数据处理、并行计算、响应式编程等场景下的高级应用,帮助开发者提升集合操作效率与代码质量。
219 1
|
4月前
|
安全 Java 微服务
Java 最新技术和框架实操:涵盖 JDK 21 新特性与 Spring Security 6.x 安全框架搭建
本文系统整理了Java最新技术与主流框架实操内容,涵盖Java 17+新特性(如模式匹配、文本块、记录类)、Spring Boot 3微服务开发、响应式编程(WebFlux)、容器化部署(Docker+K8s)、测试与CI/CD实践,附完整代码示例和学习资源推荐,助你构建现代Java全栈开发能力。
536 1
|
存储 并行计算 Java
Java8特性大全(最新版)
Java8特性大全(最新版)
下一篇
oss云网关配置