java笔记 包及访问控制权限

Java 笔记 包及访问控制权限

1.package关键字

package是在使用多个类或接口时,为了避免名称重复而采用的一种措施,直接在程序 中加入package关键字即可,格式如下。
package包名称.子包名称;
案例1
package org.sz.demo01;
class Demo{
public String getInfo() {
return “Hello world!”;
}
}
public class PackageDemo01{
public static void main(String args[]) {
System.out.println(new Demo().getInfo());

}

}
结果
编译需要 javac -d . PackageDemo01.java //-d(空格).(空格)
PackageDemo01
翻译时 java 包.类名称

2.import语句

*如果几个类放在不同的包中,在使用类就必须通过Import语句导入

  • 使用格式
    import 包名称.子包名称.类名称;//手动导入所需要的类
    import 包名称.子包名称.*; // 由JVM自动加载所需要的类

案例1:
package org.sz.demo01;
public class Demo{ //public 必须要添加,不然无法从外部程序包中对其进行访问
public String getInfo() {
return “Hello world!”;
}
}


package org.sz.demo02;
import org.sz.demo01.Demo;
public class PackageDemo03{
public static void main(String args[]) {
System.out.println(new Demo().getInfo());
}
}
结果
案例1:
package org.sz.demo01;
public class Demo{ //public 必须要添加,不然无法从外部程序包中对其进行访问
public String getInfo() {
return “Hello world!”;
}
}


package org.sz.demo02;
import org.sz.demo01.*;
public class PackageDemo03{
public static void main(String args[]) {
System.out.println(new Demo().getInfo());
}
}
结果

3.public class和class的区别

  • 如果一个类声明为public class,则文件名称必须与类名称 一致,而且在一个类文件中只能有一个public class,而如果使用class声明一个类,则文件 名称可以与类名称不一致,但是执行时必须执行生成的class文件名称。除了这些之外,public class和class还在包的访问上有所限制,如果一个类只在本包中访问,不需要被外包访问, 则直接声明成class即可;而如果一个类需要被外包访问,则必须声明为public class.

4.导入不同包的相同类

  • 为了避免出现歧义 在声明Demo对象时要明确的写出完整的“包.类”;
    案例
    package org.sz.demo01;
    public class Demo{
    public String getInfo() {
    return “Hello world!”;
    }
    }

package org.sz.demo03;
public class Demo{
public String getInfo() {
return “Hello sz!”;
}
}


package org.sz.demo02;
import org.sz.demo01.;
import org.sz.demo03.
;
public class PackageDemo03{
public static void main(String args[]) {
System.out.println(new org.sz.demo01.Demo().getInfo());
System.out.println(new org.sz.demo03.Demo().getInfo());
}
}结果

5.系统常用包

1 java.lang 此包为基本的包,String都保存在此包之中,在JDK 1.0中如果想编写程序,则必须手工导入此包,但是随后的JDK解决了此问题,所以此 包现在为自动导入
2 java.lang.reflect 此包为反射机制的包,是javadang的子包,在Java反射机制中将会为 读者介绍
3 java.util 此包为工具包,
一些常用的类库、日期操作等都在此包中,如果把此包掌握精通,则各种设计思路都好理解
4 java, text 提供了一些文本的处理类库
5 java.sql 数据库操作包,提供了各种数据库操作的类和接口
6 java.net 完成网络编程
7 java.io 输入、输出处理
8 java.awt 包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些 类被用来构建和管理应用程序的图形用户界面(GU1)
9 javax. swing 此包用于建立图形用户界面,此包中的组件相对于java.awt包而言是轻量级组件

6.静态导入

  • 如果一个类中的方法全部都是使用static声明的静态方法,则在导入之后就可以使用import static 的方式导入
  • 导入格式
    import static 包.类.
    案例
    package org.sz.demo04.a; //注意这里是包名称加类加

    public class Demo{
    public static int add (int i,int j) {
    return i + j;
    }
    public static int sub (int i,int j) {
    return i - j;
    }
    public static int mul (int i,int j) {
    return i * j;
    }
    public static int div (int i,int j) {
    return i / j;
    }
    }

package org.sz.demo04.b;
import static org.sz.demo04.a.Demo.*;
public class StaticImportDemo{
public static void main(String args[]) {
System.out.println(" 3 + 2 = " + add(3,2));
System.out.println(" 3 - 2 = " + sub(3,2));
System.out.println(" 3 * 2 = " + mul(3,2));
System.out.println(" 3 / 2 = " + div(3,2));

}

}j结果

7.jar命令的使用

  • 在实际开发中没有包的基本不存在,完整类名称“包.l类名称”
    *主要命令
    jav C:创建新的文档
    V:生成详细的输出信息
    F:指定存档的文件名
    案例
    package org.sz.demo05.demo;
    public class Hello1{
    public String getInfo() {
    return “Hello world!!”;
    }
    }
    package org.sz.demo05;
    import org.sz.demo05.demo.Hello1;
    public class ImportJarDemo{
    public static void main(String args[]) {
    Hello1 hello = new Hello1();
    System.out.println(hello.getInfo());
    }
    }
    将其打包编译:java -d . Hello.java
    将其打成Java包:jar -cvf my.jar org
    如果一个jar包要使用,必须配置path路径
    set classpath=.;d:\testjava\my.jar //设置两条路径,一条为.;另一条为jar包所在的路径

8.包的访问权限控制

表

  • private :可以定义方法,属性,定义的方法属性不会被类的外部看见
  • default : 可以在本包中的任意地方访问
  • public : 公共的,都可以访问
package org.sz.demo06.b;
public class HelloDemo{
	protected String name = "sz";
}
package org.sz.demo06.a;
import org.sz.demo06.b.HelloDemo;
class SubHelloDemo extends HelloDemo{
	public void print(){
		System.out.println("访问成功   " + super.name);
	}
}
public class ProtectedDemo01{
	public static void main(String args[]) {
		SubHelloDemo sub = new SubHelloDemo();
		sub.print();
	}
}
	

结果

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值