类及成员的属性——类的可访问性

12.1 类的可访问性

1、在很多情况下,我们需要一定的封装性实现信息隐藏,

2、类的可访问性是指当前类可被其他类所访问的程度,

3、通过不同的可访问性修饰符可以体现程序的封装性。

类的可访问性修饰符:

  • public——修饰的类可被其他任意类所访问,即可展示给所有的类使用。
  • 默认访问控制属性——只能被当前包中的类所访问,即只能展示给当前包中的类使用。

 12.1.1 public——具有最好的公开性

  关键字public修饰的类具有最大的可被访问性。都可以被任何其他类所访问,无论其他类在当前包中,还是在其他地方

  在使用public修饰类时,必须保证一个包中,也就是在一个.java程序中只能有一个public类。这个类作为整个.java文件的接口,实现文件内类的封装。

//MyClass.java
package mypackage;    //创建包文件
public class MyClass
{
    public void sumTwo(int i, int j)
    {
        System.out.println(i+j);
    }
}

编译通过,生成包mypackage,包中保存MyClass.class文件

接下来创建新的应用程序,不在当前包中。

//Example1201.java
import mypackage.MyClass;    //或使用import mypackage.*;
public class Example1201
{
    public static void main(String[] args)
    {
        MyClass mc = new MyClass();
        mc.sumTwo(12,34);
    }
}

程序调用前面包中的文件。

  • public修饰的类MyClass具有最好的可被访问性,无论Example1201类在任何地方,都可以使用MyClass类。
  • 在调用该类时,需要首先导入该类,即用import语句定位并导入该类

12.1.2 默认访问——只能被同一个包中的类访问

  默认访问属性(无访问控制符)说明该类只能被同一个包中的类所访问,包外的类无法生成该类的对象。这样,就使类具有了封装性能。

  

//MyClass.java
package mypackage;    //创建包文件
class MyClass             //默认访问属性,无"public"
{
    public void sumTwo(int i, int j)
    {
        System.out.println(i+j);
    }
}
//Example1201.java
import mypackage.MyClass;    //或使用import mypackage.*;
public class Example1201
{
    public static void main(String[] args)
    {
        MyClass mc = new MyClass();
        mc.sumTwo(12,34);
    }
}

包外的Example1201类不能调用到MyClass类,因为MyClass不是public。

解决方法2种:1、MyClass类加public修饰符,变成public的;

        2、将Example1201类和MyClass类写进同一个包中。

原文地址:https://www.cnblogs.com/jolene-wu/p/8298636.html