您的位置:首页 > 编程语言 > Java开发

《Thinking in Java》学习笔记-----第6章 访问权限控制

2016-08-08 10:51 746 查看
目录:

编写Java源代码文件的基本要求是什么

如何起包名

Java不同访问权限修饰词的功能是什么

如何为具有私有化构造方法的类创建对象

编写Java源代码文件的基本要求是什么?

当编写一个Java源代码文件时,此文件通常被称为编译单元,每个编译单元都必须有一个后缀名.java

而在编译单元内则可以有一个public类,该类的名称必须与文件名称相同(包括大小写,但不包括文件的后缀名.java)。

每个编译单元只能有一个public类,否则编译器就不会接受。

如何起包名?

按照惯例,package名称的第一部分是类的创建者的反顺序的Internet域名。

因为域名是独一无二的,所以package名称也将是独一无二的。

Java不同访问权限修饰词的功能是什么?‘

在成员方法、成员变量前的修饰词:

public: 所有包中的类可见

protected:同一个包的类可见,有继承关系的子类可见

(default) :同一个包的类可见

private:本类可见

在类前的修饰词:

public:所有包可见

(default) :同一个包可见

不能用private和protected修饰类

如何为具有私有化构造方法的类创建对象?

解法一:在该类中创建一个static方法,它创建一个该类的对象并返回一个对它的引用。那么其他的类要想创建该对象,调用该方法就行了。

解法二:用单例模式。

以下为演示代码(Soup1和Soup2分别对应解法一和解法二):


/**
* <p>Description:private constructor</p>
* <p>2016年8月6日 上午10:41:26</p>
* @author  wdk
* @version 1.0
*/
class Soup1{
private Soup1(){}
public static Soup1 makeSoup(){
System.out.println("Create Soup1 successfully");
return new Soup1();
}
}
class Soup2{
private Soup2(){}
private static Soup2 sp = new Soup2();
public static Soup2 access(){
System.out.println("Create Soup2[static] successfully");
return sp;
}
public void f(){
System.out.println("Invoke normal method successfully!");
}
}
public class Lunch {
void testPrivate(){
//Can't do this! Private constructor:
//!Soup1 soup = new Soup1();
}
void testStatic(){
Soup1 soup = Soup1.makeSoup();
}
void testSingleton(){
Soup2.access().f();
}

public static void main(String[] args) {

Lunch lunch = new Lunch();
lunch.testStatic();
lunch.testSingleton();
}
}/*Output:
Create Soup1 successfully
Create Soup2[static] successfully
Invoke normal method successfully!
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 笔记 对象