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("密码错误,无法修改!");
        }
        }
        
        
    
    
}

 

posted @ 2019-02-03 20:15  Transkai  阅读(1042)  评论(0编辑  收藏  举报