【JavaSE】Java面向对象三大特征 <1> -【封装】_ Java SE

导读:本篇文章讲解 【JavaSE】Java面向对象三大特征 <1> -【封装】_ Java SE,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

✨作者:@小孙的代码分享

✨专栏:《Java SE》

✨送给各位的一句话:空杯心态 才能学到新知

✨希望大家看完博客可以有所收获,别忘了,点赞+评论!

【JavaSE】Java面向对象三大特征 <1> -【封装】_ Java SE

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

今天我们就来认识一下封装吧。

🐲封装

/**
 * @author Sun
 * @version 2021.2
 * @date 2022/5/15 20:53
 */
class  ID {
    String password =  "123456";
}
public class WeChat {
    public static void main(String[] args) {
        ID id  =  new ID();
        System.out.println(id.password);
        id.password="000000";
        System.out.println(id.password);
    }
}

上述代码创建了一个微信账号对象,并读取和修改了密码(password对象的属性)。从Java的语法上说,这没有问题。但对于生活来说,你的微信密码可以被人随意修改是不是很危险!所以对于这些密码来说,密码这个属性不应该被随时访问和修改。面向对象中解决这个问题,就采用了封装的特性。

封装指的是:任何对象都应该有一个明确的边界,这个边界对对对象内部的属性和方法起到了保护的作用。

🐲属性的封装

为ID的password属性增加private关键字:

class  ID {
     private String password =  "123456";
}

当给属性添加了private关键字之后,这个属性就变成了一个 私有属性。 所谓私有,就是该属性只能在本类中访问。

这就相当于你的微信密码得到了保护,其他人不能对它就行读取和修改。

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

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

则WeChat类可以改成:

public class WeChart{
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 做成私有,则无法达到“只读”的效果。

🐲方法的封装

我们在设计一个类的时候,会为这个类设计很多方法。有些方法应该做成 public 方法,以供其他对象来调用,而有些方法只供自身调用,不作为对象对外暴露的功能,就应该做成private 方法。

私有方法是个不错的选择。

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/119577.html

(0)
seven_的头像seven_bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!