0%

Java笔记——类与对象(二)

Java 包

为了更好地组织和管理类,Java提供了包机制,用于区别类名的命名空间。

包的作用

  • 把功能相似或相关的类或接口组织在同一包中,方便查找和使用;
  • 包采用树形目录的存储方式,同一包中的类名不同,不同的包中的类名可以相同,包可以避免命名冲突;
  • 包限定了访问权限,拥有包访问权限的类才能访问某个包中的类。

在Java中,包的使用需要用到包封装语句package和包导入语句import

package语句

package语句的含义是将源文件中定义的所有类放在同一文件夹中;格式如下:

package <包名>;

<包名>可以是字符串,也可以由多个字符串通过.连接起来。

例如:

package nimitiz;

package cn.nimitiz;

注意事项:

  • 包的声明只能位于Java源文件的第一行,每个源文件只能有一个包声明;
  • 包名的所有字母必须小写,同时不能包含特殊字符;
  • Java解释器会将包名中的.解释为目录分隔符(Windows下目录分隔符为\);
  • 如果源文件中没有包声明,那么其中的类、接口等将被保存到一个默认的包java.lang中。

举个栗子

创建一个Java源文件demo0.java

package cn.nimitiz;		//demo0.java的相对路径为./cn/nimitiz

public class demo0
{
public String name;
public int age;
public void tags()
{
System.out.println("name: "+name+"");
System.out.println("age: "+age+"");
}
}

import语句

如果要使用某一包中的成员,需要在Java源文件中使用import语句导入该包。

  • 一个Java源文件中可以有多个import语句,必须写在package语句之后,且在类定义之前;
  • 如果一个Java源文件没有使用import语句,编译器将自动引入默认的包java.lang

引入包中的某个类

import <包名>.<类名>;

例如,引入包cn.nimitiz中的类demo0

import cn.nimitiz.demo0;

class demo
{
public static void main(String[] args)
{
demo0 d=new demo0();
d.name="NIMITIZ";
d.age=18;
d.tags();
}
}

引入包中的所有类

import <包名>.*;

例如,引入包cn.nimitiz中的所有类:

import cn.nimitiz.*;

class demo
{
public static void main(String[] args)
{
demo0 d=new demo0();
d.name="NIMITIZ";
d.age=18;
d.tags();
}
}

访问级别

Java中有四种访问级别:privatedefault(默认方式,不带任何修饰符)protectedpublic

  • private:被其修饰的属性和方法只能被该类的对象访问,其子类不能访问,更不允许跨包访问
  • default:只允许在同一包中访问
  • protected:被其修饰的属性和方法只能被类本身的方法及子类访问,即使子类在不同的包中也可以访问
  • public:被其修饰的类、属性和方法不仅可以跨类访问,而且允许跨包访问
同一类 同一包 不同包的子类 不同包的非子类
public
protected
默认方式(default)
private