第五章 包及访问控制权限

第五章 包及访问控制权限

5.1 包的定义

所谓的包实际上就是文件夹,在java中使用package关键字来定义包,此语句必须写在*.java文件的首行。

例:package com.yootk.demo;

表示文件保存在com/yootk/demo目录下

5.2 包的导入

包的导入:import 包的定义:package\

同一个包默认可以相互访问。

package com.company;

public class Message {
    public void TestMessage(){
        System.out.println("Hello World!");
    }
}
package com.company;
import com.company.Message;
public class TestDemo {
    public static void main(String[] args) {
        // write your code here
        Message msg = new Message();
        msg.TestMessage();
    }
}

程序在编译过程中应该先编译Message,在编译TsetMessage。

关于public class 与class的区别:

public class:文件名称必须与类名称保持一致,在一个*.java文件里面只能有一个public class声明,如果一个类需要被不同的包访问,那么一定要定义为public class;

class: 文件名称可以与类名称不一致,并且一个* .java 文件里面可以有多个class定义,编译后会形成多个*.class文件,如果一个类使用的是class定义,那么表示这个类只能被本包访问。

为了方便访问,特地使用了**import com.company.***进行全部导入。

当不同的包存在相同的类名称时:可以使用 包.类名称,进行具体化导入。

5.3 系统常见包

No.包名称作用
1java.lang基本的包,像String这样的类就都保存在此包中,在JDK 1.0时如果想编写程序,则必须手工导入此包,但是现在可以自动导入了。
2java.lang.reflect反射机制的包
3java.util工具包,一些常见的类库,日期操作等
4java.text提供一些文本的处理
5java.sql数据库操作包
6java.net网络编程开发包
7java.io进行输入输出处理及文本操作
8java.awt包含构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)
9javax.swing建立图形用户界面
10java.appletApplet程序开发包,(已经不用了)

5.4 jar命令

-c:建立一个新文件

-v:生成标准的压缩信息

-f:由用户自己指定一个*.jar的文件名称。

5.5 访问权限

private:只能在同一个类中访问;

default:只能在一个包中访问;

protected:在不同包的子类中可以访问;

public:所有都可以访问;

  • 属性声明主要使用private权限;
  • 方法声明主要使用public权限;

5.6 命名规范

  • 类名称:每一个单词的开头首字母大写

  • 变量名称:第一个单词的首字母小写,之后每个单词的首字母大写;

  • 方法名称:第一个单词的首字母小写,之后每个单词的首字母大写;

  • 常量名称:每个字母大写

  • 包名称:所有字母小写

5.7 单例设计模式 (Singleton)

意义:

如果要控制一个类中实例化对象的产生个数,首先要锁定的就是类中的构造方法(使用private定义构造方法),因为在实例化任何新对象时都要使用构造方法,如果构造方法被锁,就自然无法产生新的实例化对象。

如果要调用类中定义的操作,那么很显然需要一个实例化对象,这时就可以在类的内部使用static方式来定义一个公共的对象,并且每一次通过static方法返回唯一的一个对象,这样外部不管有多少次调用, 最终一个类只能产生唯一 的对象,这样的设计就是单例设计模式。

package com.company;

class Singleton {
    private final static Singleton instance=new Singleton();
    private Singleton(){
    }
    public void print(){
        System.out.println("Hello world!");
    }
    public static Singleton getInstance(){
        return instance;
    }
}
public class TestDemo {
    public static void main(String[] args) {
        // write your code here
        Singleton inst=null;
        inst=Singleton.getInstance();
        inst.print();
    }
}

5.8 多例设计模式

多例设计模式:定义出多个对象。

package com.company;

class Sex {
    private String title;
    private static final Sex MALE=new Sex("男");
    private static final Sex FEMALE=new Sex("女");
    private Sex (String title){
        this.title=title;
    }
    public String toString(){
        return this.title;
    }
    public static Sex getInstance(int ch){
        switch (ch){
            case 1:
                return MALE;
            case 2:
                return FEMALE;
            default:
                return null;
        }
    }
}
public class TestDemo {
    public static void main(String[] args) {
        // write your code here
        Sex sex=Sex.getInstance(1);
        System.out.println(sex);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值