Java面对对象 二

                  封装

面向对象三大特征之一:封装

封装的概念:

               将类的某些信息隐藏在类内部,不允许外部直接访问

               而是通过该类提供的方法来实现对隐藏信息的操作和访问。

封装的两个大致原则:

               1,把尽可能多的东西隐藏起来,对外提供边界的接口

                2,把所有属性藏起来

为什么要使用封装:

              属性随意访问 

              代码局部有缺陷  会有不合理的赋值

如何实现封装:

             1,修改属性的可见性——>设为private防止错误的修改

              2,创建共有的setter / getter方法——>用于属性的读写

              3,在setter / getter方法中加入属性控制语句——>对属性值的合法性进行判断

封装的好处:

              便于使用者正确使用系统,防止错误修改属性

              有助于系统间的松耦合,提高系统的独立性

               提高软件的可重用性

               降低了大型系统的构建风险

                          <包>

为什么需要包:

           windows树型文化系统

                     便于文档分门别类,易于查找和管理

                     使用目录解决文件同名冲突问题

           如何将两个同名的类而不冲突?  使用包!

包命名的规范:

           (1)包名由小写字母组成,不能以原点开头结尾

          (2)包名之前最好加上唯一的前缀 通常使用组织倒置的网络域名

          (3)包名后续部分以不同机构内部的规范不同而不同。

访问修饰符

从小到大

private(私有的)              本地访问

默认修饰符                          本地访问,同包访问,

protected(受保护的)     本类访问,同包访问,子类访问

public(公开的)               本类访问,同包访问,子类访问,任何地方  

          static     修饰符

            {成员变量:静态变量  可以直接通过类名访问

修饰:{成员方法:静态方法 可以直接通过通过类名访问

            {代码块:静态代码块 当java虚拟机加载类时就会执行该代码块

(1)成员变量

           a,类变量(静态变量)

                     被static修饰的变量

                     在内存中只有一个拷贝

                     类内部可以在任何方法内直接访问静态变量

                    在其他类中,可以直接通过类名访问,

            b,实例变量

                      没有被static修饰的变量

                      每创建一个实例,就会以'实例变量分配一次内存

                      实例变量可以在内存中有多个拷贝,互不影响。

static变量的使用

             (1)能被类的所有实施共享可作为实例间ji进行交流的共享数据

            (2)如果类的所有实例都包含一个相同的常量属性,可以把这个属性定义为静态常量类型,节省内存空间

static方法:

          (1)静态方法可直接通过类名的访问。

                  1,静态方法中不能直接使用this ,super

                  2,不能直接访问所属类的实例变量和实例方法

                  3,可直接访问类的静态方法,静态变量

          (2)实例方法:通过实例访问

                 1,可直接访问所属类的静态变量,静态方法,实例变量与方法

PS:静态变量必须被实现,

         main方法为static——>静态方法必须被执行   不需要创建对象就可以实行

static    代码块(静态块)           

              用法:static{

                             -------------

                                {  

 java虚拟机加载类时,加载静态代码块

               1,如果有多个静态块,按顺序加载

               2,每个静态代码只会被执行一次

               3,方法里不可以定义static变量

猜你喜欢

转载自blog.csdn.net/luvhl711/article/details/81257814