把属性和方法私有,仅提供对外的访问方式---封装

封装:把属性和方法私有,仅对外提供访问方式。
封装有几种类型:类的封装:将方法和属性写进类中就是类的封装。方法的封装:对外提供访问权限,仅在该类中有效。数据封装:(同上)。
封装的好处:降低耦合率 可重复调用类中的属性 提高安全性
1,封装数据代码实现:

class Person {
    private int age;

    public void setter(int a) {
        System.out.println("gtter" + this);
        this.age = a;
    }

    public int getter() {
        System.out.println("gtter" + this);
        return this.age;
    }
}

public class Demo1 {
    public static void main(String[] args) {
        Person p = new Person();
        p.setter(80);
        p.getter();
        int b = p.getter();
    }

}

this是什么玩意?对于我而言在暑假this就是代表当前对象,今天有了更新的认识this代表了当前对象的地址,了解了内存图解就好了解了。我们定义一个setter()方法在电脑里是setter(this),在main方法里我调用setter,在电脑里就是setter(p),在创建对象时p指向对象的地址,p将地址以隐式参数的形式传给this,那么在方法中打印this就是打印地址。我上面的setter,getter方法都不能用static。
2,通过封装,保证属性的合法性:

package com.lishuai.fuxi.www;

class People5 {
    private int age;
    private String name;

    public int getAge() {
        if (age < 0 || age > 150) {
            System.out.println("你输入的年龄非法");
            return 00000;
        } else {
            return age;
        }
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

public class FengZhuang {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        People5 p=new People5();
        p.setAge(180);
        p.setName("lilei");
        int i=p.getAge();
        System.out.println(p.getName()+"--   -- "+i);
    }

}

我们通过封装技术,将属性私有化,让调用者无法随意赋值,当赋值错误时,通过get方法返回来的数据将是错误数据,并将会提示错误。
封装技术将使我们的属性更安全。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容