Java 三大特性(一)封装:private、public、default、protect区别

一.封装的思想

1 思想从何而来 我的观点: 从现实世界来,人的个体是对各种状态和行为的封装,行为又是对实现步骤的封装。 例如人有不同的年龄状态,财富状态,有做饭的行为,做饭又包括洗米,下锅等步骤。一旦你老妈叫你做饭,那么她不关心你做饭的细节过程,只关心结果。因为你已经将做的饭步骤细节已经完整封装了

类是对属性和方法的封装,方法是对实现细节的封装。

其他观点: 封装是对一些属性和行为进行隐藏,例如财富,它是一个隐私,我不想让外面去看到

2 封装的好处 属性的读写控制,数据的安全检查(提高安全性)v 隐藏实现细节, 减少修改、扩展类时对外界组件的影响,增强易维护性v 提高软件的可复用性3 封装的步骤: 3.1 用private修饰属性 3.2 每个属性添加set,get方法。 3.3 在set,get 方法中加控制语句。

二.访问控制符

(1)public

访问控制符干什么用的 就是对属性和方法进行不同程度的隐藏

public 1 可以修饰类 表示这个类可以被引入到任何地方使用

2 可以修饰属性和方法 表示这个属性和方法,可以在本类,本包其它类中,其它包的类中使用

(2)protected

protected 受保护的 1 不能用来修饰类

2 可以修饰属性和方法 表示这个属性和方法,不能在其它包中访问,可以在本包中的其它类,可以在其它包的子类通过this/super访问

(3)default

不加任何访问控制符就表示default

default 可以修饰类,表示该类只能在当前包中使用 可以修饰方法,属性,表示属性和方法 只能在当前包中的类里使用

(4)private

1 何为完全封装 对所有的属性进行private隐藏,然后为这些属性提供get/set方法来存取访问

2 get/set方法的写法 boolean值 setXxx, isXxx 其它类型 setXxx,getXxx

import java.util.Scanner;

public class Account {
    private String name;
    private int age;
    private double money;
    private Scanner input;
    private Scanner input2;
    
    public Account() {
        super();
    }

    public Account(String name, int age, double money) {
        super();
        this.name = name;
        this.age = age;
        this.money = money;
    }

    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>1&&age<150) {
            this.age = age;
        }
        else {
            System.out.println("请输入正确的年龄");
            this.age=1;
        }
        
    }

    public double getMoney() {
        input = new Scanner(System.in);
        System.out.print("请输入密码:");
        String password=input.next();
        if (password.equals("111")) {
            return money;
        }
        else {
            System.out.println("密码错误,无法查看");
        }
        return 0;
    }

    public void setMoney(double money) {
        input2 = new Scanner(System.in);
        System.out.print("请输入密码:");
        String password=input2.next();
        if (password.equals("111")) {
            this.money =this.money+ money;
        }
        else {
            System.out.println("密码错误,无法修改!");
        }
        }
        
        
    
    
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值