封装与接口

总结之前的内容,对象(object)指代某一事物,(class)指代对象的类型。对象可以有状态和动作,即数据成员和方法。

到现在为止,数据成员和方法都是同时开放给内部和外部的。在对象内部,我们利用 this 来调用对象的数据成员和方法。在对象外部,比如当我们在另一个类中调用对象的时,可以使用 对象.数据成员对象.方法() 来调用对象的数据成员和方法。

我们将要 封装(encapsulation)对象的成员(成员包括数据成员和方法),从而只允许从外部调用指定部分的成员。利用封装,我们可以提高对象的易用性和安全性。




对象成员的封装

Java 通过三个关键字来控制对象的成员的 外部可见性(visibility): publicprivateprotected

  • public:该成员外部可见,即该成员为接口的一部分
  • private:该成员外部不可见,只能用于内部使用,无法从外部访问。
  • (protected涉及继承的概念,放在以后说)

我们先来封装以前定义的 Human 类:

class Human 
{
    Human(int h)
    {
        this.height = h;
        System.out.println("I'm born");
    }

    public int getHeight() // 公共方法
    {
       return this.height;
    }

    public void growHeight(int h) // 公共方法
    {
        this.height = this.height + h;
    }

    private void breath() // 私有方法
    {
        System.out.println("hu...hu...");
    }

    public void repeatBreath(int rep) // 公共方法
    {
        int i;
        for(i = 0; i < rep; i++) {
            this.breath();
        }
    }

    private int height; // 私有变量
}


public class Test
{
    public static void main(String[] args)
    {
        Human aPerson = new Human(160);
        System.out.println(aPerson.getHeight());
        aPerson.growHeight(10);
        System.out.println(aPerson.getHeight());
        aPerson.repeatBreath(5);
    }
}

输出结果:

I'm born
160
170
hu...hu...
hu...hu...
hu...hu...
hu...hu...
hu...hu...

内部方法并不受封装的影响。Human 的内部方法可以调用任意成员,即使是设置为 privateheightbreath() 都可被调用。

外部方法只能调用 public 成员。当我们在 Human 外部时,比如 Testmain() 函数中,我们只能调用 Human 中规定为 public 的成员,而不能调用规定为private的成员。

如果我们强行调用 aPerson.breath();aPerson.height,编译时候都会报错。

通过封装,Human类就只保留了下面几个方法作为接口:

getHeight()
growHeight()
repBreath()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、封装 1、什么是封装? 在一个对象中,包含了状态和行为,状态指的是对象的数据成员,而行为则对应了对象的方法。数...
    三笑奈若何阅读 973评论 0 1
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,766评论 18 399
  • 不需要轰轰烈烈,没必要大张旗鼓,只愿轻轻地陪你走过…… ~题记 江南正是好雨时节,丝丝细雨掠过茫茫江面,...
    Gossoon阅读 213评论 0 0
  • 万圣节眨眼就要快来了,照例问两位小朋友想要当什么。姐姐要做吸血僵尸,弟弟笑哭我了,他说今年他…… 要 当 一 支 ...
    二十五岁的老奶奶阅读 962评论 15 19
  • 大家都是20几岁的人,何必呢? 过年期间,无疑是我们92年出生的未婚女子的一个劫,单身久了,真的习惯了。 有时候不...
    可惜没如果_7de6阅读 175评论 1 0