访问控制

三、访问控制

1.包的概念

package语句:

定义类时需要指定类的名称,但如果仅仅将类名作为类的唯一标识,则不可避免的出现命名冲突的问题,这会给组件复用以及团队间的合作造成很大的麻!

在java语言中,用包(package)的概念来解决命名冲突的问题。在定义一个类的时候,除了定义类的名称,一般还要指定一个包名,定义包名的语法为:package 包名;

import语句:

访问一个类时,需要使用该类的全称,但这样的书写方式过于繁琐;

可以通过import语句对类的全称进行声明。import语句的语法为:import类的全局限定名(即包名+类名);

通过import语句声明了类的全称后,该源文件中就可以直接使用类名来访问了。

2.访问控制修饰符

private修饰的成员变量和方法仅仅只能在本类中调用;

public修饰的成员变量和方法可以在任何地方调用。

public修饰的内容是对外提供可以被调用的功能,需要相对稳定;

private修饰的内容是对内实现的封装,如果公开会增加维护的成本。

protected和默认访问控制

用protected修饰的成员变量和方法可以呗子类及同一个包中的类使用

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

访问控制符修饰类:

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

protected和private可以用于修饰内部类。

访问控制符修饰成员:

3.static和final关键字

static关键字:

1>static修饰成员变量

用static修饰的成员变量不属于对象的数据结构;

static变量是属于类的变量,通常可以通过类名来引用static成员;

static成员变量和类的信息一起存储在方法区,而不是在堆中,一个类的static成员变量只有“一份”;无论该类创建了多少对象。

2>static修饰方法

通常的方法都会设计到对具体对象的操作,这些方法在调用时,需要隐式的传递对象的引用(this).

static修饰的方法则不需要针对某些对象进行操作,其运行结果仅仅与输入的参数有关,调用时直接用类名引用。

由于static在调用时没有具体的对象,因此在static方法中不能对非static成员(对象成员)进行访问。

3>static块

static块:属于类的代码块,在类加载期间执行的代码块,只执行一次,可以用来在软件中加载静态资源。

final关键字:

1>final修饰变量

final关键字修饰变量,意为不可改变。

final修饰成员变量,两种方式初始化:

-声明同时初始化

-构造函数中初始化

final关键字也可以修饰局部变量,使用之前初始化即可

2>final修饰方法

final关键字修饰的方法不可以被重写。

使一个方法不能被重写的意义在于:防止子类在定义新方法时造成的不经意重写。

3>final修饰类

final关键字修饰的类不可以被继承。

final class Foo{

}

jdk中的一些基础类库被定义为final的,例如:string、Math、Integer、Double等

使一个类不能被继承的意义在于:可以保护类不被继承修改,可以控制滥用继承对系统造成的危害

static final:

1>static final修饰的成员变量称为常量,必须声明同时初始化,不可被改变。

2>static final常量会在编译期被替换

posted @ 2018-07-12 21:56  挚诚  阅读(115)  评论(0)    收藏  举报