首页 > 编程语言 >[Java] 2.封装

[Java] 2.封装

时间:2023-03-01 11:22:05浏览次数:35  
标签:封装 int 18 age private Person Java class

封装


封装就是要程序员学会正确设计类对象的属性和方法,举个例题:

请对“人 在 加油站 加200块汽油” 进行面向对象设计。

显然我们可以得到两个类
:class Person {}
加油站:class GasStation() {}
和一个方法
加油: void oiling(int volume) {}

问题来了,方法 oiling() 应该归属于人还是加油站。

答案:归属于加油站

封装原则: 对象代表什么,就要封装对应的数据,并提供数据对应的行为

class GasStation {
    int volume;
    public void oiling(int volume) {
        System.out.println("给人加" + volume + "升汽油");
    }
}

又或是“人关门”,对应两个类(人、门),而关门这个方法应该属于门自己,人只是调用门的关闭方法来实现关门。


private

类成员的权限修饰符,被private修饰的成员只能在本类中访问来保证安全性。

public class Person {
    private String name;
    private int age;
}

Person p1 = new Person();
p1.age = 18;  //无法执行

保证了安全性,但可用性下降了,解决如下:
设计setAge方法用于设置age
getAge用于对外界提供age
既保证了数据安全性,也保证了可用性。

public class Person {
    private String name;
    private int age;

    public void setAge(int age) {
        if (age >= 18 && age <=50) age = a;
        else System.out.println("数据非法");
    }

    public int getAge() {
        return age;
    }
}

就近原则

同名变量,就近原则

class Person {
    private int age = 10;

    public void method() {
        int age = 18;
        System.out.println(age);  // 触发就近原则,输出18
    }
}

结果为18。如果要调用成员变量age=10而不是局部变量age=18,则需要用this.age

标签:封装,int,18,age,private,Person,Java,class
From: https://www.cnblogs.com/libayu/p/17167497.html

相关文章

  • 通过8个常用hook手把手教你封装hooks
    通过8个常用hook手把手教你封装hooksFE情报局 ​关注他 11人赞同了该文章对于使用react的同学来说,hook一定不陌生,但是如何封装hook以及在业务......
  • Java导出word文档
    首先上测试代码,用的SpringMVC。/***测试导出word文档**@paramrequest*@return*@throwsCustomException*@authoryuanjin......
  • 33 个重要的 JavaScript 概念
    33个重要的JavaScript概念原创2022-12-2418:21·程序媛最幽默 了解这33个JavaScript概念绝对会让你将来的职业生涯受益无穷。话不多说,直接进入主题!1.调用栈......
  • 分享 29个超有用的 JavaScript 单行代码(下)
    分享29个超有用的JavaScript单行代码(下)原创2023-02-0321:19·前端达人大家好,在上一篇文章《分享29个超有用的JavaScript单行代码(上)》分享了日期、字符串、数字、数......
  • 分享29个超有用的 JavaScript 单行代码(上)
    分享29个超有用的JavaScript单行代码(上)原创2023-02-0320:13·前端达人在这篇文章中,我列出了一系列29个JavaScript单行代码,它们在使用原生JS(≥ES6)进行开发时非常......
  • 7 个 高效的 JavaScript 库,总有一个适合你
    7个高效的JavaScript库,总有一个适合你原创2023-02-1409:45·前端达人转载说明:原创不易,未经授权,谢绝任何形式的转载当我们可以通过使用库轻松实现相同的结果时,为......
  • 给外联样式表和JavaScript脚本增加版本号的方法
    方法和问题方法一:前端使用JQuery的方法增加版本号方法二:前端使用JavaScript来增加版本号方法三:后端代码加载方法一:前端使用JQuery的方法增加版本号先上代码<scri......
  • java Random工具类
    常用的创建random的用法如下:for(inti=0;i<10;i++){System.out.println(newRandom().nextDouble());//0-1之间的随机double数System.out.println(Math.rand......
  • javaapi在线查查询有哪些网站
    java8oracle官网在线api:​​​https://docs.oracle.com/javase/8/docs/api/​​​matools网(感觉这个是映射了oracle官网):​​http://www.matools.com/api/java8​​w3c......
  • java后台实现反向代理
    背景A平台登录,需要打通B平台白话文:当A登录的之后,就默认B也登录了,但是不能做单点登录,因为不能修改B的代码,B是开源的,但是有开源协议,所以B的登录不能动。B系统是嵌入在A系......