Quantcast
Channel: CSDN博客移动开发推荐文章
Viewing all articles
Browse latest Browse all 5930

一起Talk Android吧(第九回:Java中的封装:一)

$
0
0

各位看官们,大家好,上一回中咱们说的是Java中面向对象的例子,这一回咱们说的例子是Java中的封装。闲话休提, 言归正转。让我们一起Talk Android吧!


看官们,在Java中提供了类这种类型,它用来封装各种类型的变量和函数。接下为我们通过伪代码来演示类:

class ClassName
{ 
    permission type ValueName; 
    permission function;
}

代码中的class是Java中的关键字,它表示类这种类型,而ClassName就是类型的名字。位于括号中的内容是被类封装的内容。这些内容可以分为两部分:

  • 一部分是各种类型的变量,我们称其为类的成员变量(或者属性);
  • 一部分是函数,我们称其为类的成员函数(或者方法);

它们与普通变量和函数的不同之处在于类型前面多了权限的限制,这个权限有三种:

  • public
  • protected
  • private

它们用来限定成员的访问权限。它们三个的访问权限大小依次递减。

  • public权限允许在类的内部和外部访问类的成员;
  • protected权限允许在类的内部和继承该类的子类中访问类的成员;
  • private权限只允许在类的内部访问成员。

这里有一个特殊的函数需要做说明:构造函数。怎么个特殊法?它没有返回值,而且函数名和类名相同。该函数主要用来做一些初始化成员变量的操作,它还可以被重载,我们可以定义多个重载函数,以完成不同的初始化操作。该函数在创建类的对象时被自动调用,不过我们也可以手动调用它:this()。这就表示调用当前类的构造函数。

类除了可以封装变量和函数外,还可以封装类。比如ClassA内部封装了ClassB,那么我们称ClassB为ClassA的内部类。内部类的定义和正常类的定义相同,我们就不做详细介绍了。

类提供了一种抽象类型,如果我们想使用这种类型,那么就需要对类进行实例化操作,也就是创建变量,接下来我们通过伪代码来演示如何创建该类型的变量:

ClassName clsVal = new ClassName();

这里的new是Java中的关键字,通过它来为类类型的对象在堆中开辟一块内存空间,不过内存的回收工作不需要我们手动操作,虚拟机会自动进行内存回收。此外,类的构造函数也会被自动调用,用来为对象做一些初始化操作。

类的对象拥有类的全部成员变量,只是不同对象中成员变量的值不同而已。如果想让类的所有对象都拥有相同的成员变量值,那么
就把这样的变量定义为static。如何定义呢?只需要在定义成员变量的时候,在访问权限后加上static关键字就可以。这样的成员变量属于类自身,而与类的对象无关。这样做还有一个好处,那就是类的对象不需要为这种成员变量开辟内存空间,进而可以节省内存空间。此外,成员函数也可以定义为static类型,定义方法和成员变量是一致的。

刚才我们说了,类只有实例化为对象后才能使用,但是有一种类不能实例化对象,什么类呢?抽象类。

abstract class ClassName
{
    // other thing
};

这样的类就是抽象类,该类中包含有抽象成员函数(抽象成员函数就是在普通成员函数前面使用abstract来修饰,而且函数中没有具体的操作内容)。不能实例化对象了,这个类还有什么用处?其实我们只需要在继承该类的子类中实现抽象函数就可以。抽象函数被实现后,子类就不是抽象类了,它就可以想正常类一样来实例化对象。

各位看官,关于Java中封装的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!


作者:talk_8 发表于2017/3/5 9:43:21 原文链接
阅读:153 评论:0 查看评论

Viewing all articles
Browse latest Browse all 5930

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>