java面对对象5:java的访问控制

java的访问控制

  java的访问控制,常用于项目的团队开发,合理的访问控制可以提高项目的稳定性,减少项目的耦合度,减少项目的维护成本,

public 和 private

 
     private修饰的成员变量和方法仅仅只能在本类中调用;而public修饰的成员变量和方法可以在任何地方调用。public修饰的内容是对外提供可以被调用的功能,需要相对稳定;private修饰的内容是对内实现的封装,如果“公开”会增加维护的成本。


   例如:
     public class Point{
       private int x;
       private int y;
       Point(int x, int y){...}
       public int distance(Point p){...}

     }


    ... ... ...
   Point p1 = new Point(1,2);
   Point p2 = new Point(3,4);
   p1.x=100;//编译报错,The field Point.x is not visible
   int d = p1.distance(p2);
   ... ... ...

 


package语句


      定义类时需要指定类的名称。但如果仅仅将类名作为类的唯一标示,则不可避免的出现命名冲突的问题。这会给组件复用以及团队间的合作造成很大的麻烦!在Java语言中,用包(package) 的概念来解决命名冲突的问题。在定义一个类时,除了定义类的名称一般还要指定一个包名:
    
   
    package 包名;

    
    例如:

     package test;
     class Point{... ... ...}

    //package语句必须写在Java源文件的最开始,在类定义之前。例如:下面的语句将为Point类//指定包名"test" :一旦使用的package指定了包名,类的全称应该是"包名.类名"。例如,上述的//Point类的全称是test.Point。  不同的包中可以定义相同的类名,例如test1.Point//和test2.Point是两个截然不同的名称。


    包名也可以有层次结构,在一个包中可以包含另外一个包。
    可以按照如下方式写package语句:

    package 包名1.包名2...包名n;

    如果各个公司或开发组织的程序员都随心所欲的命名包名的话,仍然不能从根本上解决命名冲突的问题。因此,在指定包名的时候应该按照一定的规范,例如:

     org.apache.commons.lang.StringUtil

     StringUtils时类名。而org.apache.commons.lang是多层包名,其含义如下:org.apache表示公司货组织的信息(是这个公司(或组织)域名的反写);common表示项目的名称信息;lang表示模块的名称信息。

 

 


import语句


     org.whatisjava.core.Point p = new org.whatisjava.core.Point();
//访问一个类时需要使用该类的全称。但这样的书写方式过于繁琐.可以通过
//import语句对类的全称进行声明。例如:

import org.whatisjava.core.Point;

 //通过import语句声明了类的全称后,该源文件中就可以直接使用类名来访问了。
//有时,import语句中也可以使用"*",例如


import org.whatisjava.*;


  //意味着声明该包中所有类的全称,该源文件中使用所有包名为org.whatisjava的类
 //都可以仅仅通过类名访问。需要注意的是,"import 包名.*;"  语句并不包含该包的子包
 //中的类。在Eclipse和MyEclipse中,可以使用"Ctrl + Shift + O" ,自动完成import语句。

     

 

protected 和 默认访问控制

    用protected修饰的成员变量和方法可以被子类及同一个包中的类使用。
 
    默认访问控制即不书写任何访问控制符。默认访问控制的成员变量和方法可以被同一个包中的类调用。

 


访问控制修饰符的对比

   修饰符     本类     同一个包中的类     子类         其他类

  public     可以访问     可以访问       可以访问     可以访问
  protected  可以访问     可以访问       可以访问     不能访问
  默认       可以访问     可以访问       不能访问     不能访问
  private    可以访问     不能访问       不能访问     不能访问


  //对于类的修饰可以使用public和默认方式。 public 修饰的类可以被任何一个类使用;
 //默认访问控制的类只可以被同一个包中的类使用。 protected和private 可以用于修饰内部类。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

慕容屠苏

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值