java封装

封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别

这样做有什么好处?

只能通过规定的方法访问数据
隐藏类的实例细节,方便修改和实现。
我们在开汽车的时候,只用去关注如何开车,我们并不在意车子是如何实现的,这就是封装。

如何去实现类的封装呢?

1修改属性的可见性,在属性的前面添加修饰符(private)
2对每个值属性提供对外的公共方法访问,如创建 getter/setter(取值和赋值) 方法,用于对私有属性的访问
3在 getter/setter 方法里加入属性的控制语句,例如我们可以加一个判断语句,对于非法输入给予否定。
如果我们没有在属性前面添加任何修饰符,我们通过对象就可以直接对属性值进行修改,没有体现封装的特性。这在许多程序设计中都是不安全的,所以我们需要利用封装,来改进我们的代码。

首先在类里要将属性前添加private修饰符。然后定义getter和setter方法。修改 People.java 和 NewObject.java 的内容如下。

public class People {
//属性(成员变量)有什么,前面添加了访问修饰符private
//变成了私有属性,必须通过方法调用
    private double height;     //身高

//属性已经封装好了,如果用户需要调用属性
//必须用getter和setter方法进行调用
//getter和setter方法需要程序员自己定义
    public double getHeight(){    
    //getter 方法命名是get关键字加属性名(属性名首字母大写)
    //getter 方法一般是为了得到属性值
        return height;
    }

//同理设置我们的setter方法
//setter 方法命名是set关键字加属性名(首字母大写)
//setter 方法一般是给属性值赋值,所以有一个参数
    public void setHeight(double newHeight){
        height = newHeight;
    }
}

现在 main 函数里的对象,不能再直接调用属性了,只能通过getter和setter方法进行调用。

    public static void main(String[] args) {
        People LiLei = new People();    //创建了一个People对象LiLei

        //利用setter方法为属性赋值
        LiLei.setHeight(170.0);

        //利用getter方法取属性值
        System.out.println("LiLei的身高是"+LiLei.getHeight());
    }
}
全部评论

相关推荐

头像
11-09 12:17
清华大学 C++
out11Man:小丑罢了,不用理会
点赞 评论 收藏
分享
我即大橘:耐泡王
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务