JAVA中的访问修饰符和包

时间:2023-02-21 09:11:24

一、JAVA访问修饰符

访问修饰符,用来控制类中成员的可见性

有四个访问修饰符,分别是:default,private,public,protected

1、default(默认):默认权限,不用写的。在同一包内访问。

2、private(私有):只能在同一类中访问。

3、public(公有):在任何地方都可以访问

4、protected(受保护的):子父类(即使子父类不在同一包)和本包中可访问。

public > protected > default > private

      public   protected   default   private

同一类       ok        ok      ok        ok
同一包     ok        ok      ok
子类      ok        ok
不同包     ok

二、包package

在大型项目中,往往会有几十甚至几百个类,如果不对类进行分类管理,后期进行维护时会有很大的不便。

所以,需要对类(或其它类型)进行分类组织管理,这种机制就称为“包”。

“包”是类的容器,用于分隔类名空间。如果没有指定包名,所有的示例都属于一个默认的无名包。

包的作用:

1、区分相同名字的类。同一包中的类,不能同名。但是不同包的类,可以同名。

2、当类很多时,方便管理。

3、控制访问范围。

 包名命令规范

包名关键字package,包名一律都小写

JAVAC编译方式:

当定义包时,JAVAC编译命令:javac+源文件目录+java源文件名

如果是在源文件当前目录生成包和文件: javac -d  . +java源文件名   (.点代表当前目录)

如下文件

package pack;

class PackageDemo
{
public static void main(String[] args)
{
System.out.println("Hello Package");
}
}

保存在 D:\java0217\day10

JAVA中的访问修饰符和包

javac编译命令:

javac -d d:\java0217\day10 PackageDemo.java

javac -d . PackageDemo.java

访问用java 包名.类名

如果要将class文件生成在指定的目录,JAVAC编译命令:javac+-d+指定生成目录+java源文件名

D:\myclass目录中生成类文件,javac -d d:\myclass PackageDemo.java

再设置类目录  set classpath=d:\myclass,即可访问

包之间的访问:

访问不同包中的class,需要导入包import

如下,定义一个新的Job类,并且将Job类放在study包内

package study;    //定义study包

public class Job {        //包中定义Job类
public String jobName;
public void show(){
System.out.println(jobName);
}
}

然后在包中访问这个job类时,需要import导入study包中的job类:

import study.Job;    //导入study中的Job类

public class MyTest {
public static void main(String[] args)
{
Job myJob=new Job(); //实例化Job类
myJob.jobName="工程师"; //调用类的成员属性
myJob.show(); //调用类的成员方法
}
}

输出结果:

工程师

进一步说明:按以上导入包类的方法,如果study包中定义了N侈个类,则每次实例化不同类的对象时,都需要写import study.xxxx,如有100个类就要写100次import,较麻烦

我们可以用星号*代替包中的所有类名,一次性导入包中的所有类——import study.*

import study.*;        //一次性导入study包中的所有类

public class MyTest {
public static void main(String[] args)
{
Job myJob=new Job();
myJob.jobName="工程师";
myJob.show();
}
}

注:

同一包中的类,不但表示其在同一包容器中,同时,还处于同一物理路径中。

定义class时,建议都要设置package,尽量不要放在默认包中。

JAVA中的访问修饰符和包的更多相关文章

  1. 分享知识-快乐自己:java 中的访问修饰符

    1):Java中的访问修饰符: Java面向对象的基本思想之一是封装细节并且公开接口.Java语言采用访问控制修饰符来控制类及类的方法和变量的访问权限,从而向使用者暴露接口,但隐藏实现细节. 访问控制 ...

  2. java中的访问修饰符

    Java有四种访问权限,其中三种有访问权限修饰符,分别为private,public和protected,还有一种不带任何修饰符.其中package代表缺省的访问权限,具体到代码中就是不写任何修饰符的 ...

  3. java中的访问修饰符详解

    主要讲述一下java中protected的修饰控制范围. 在叙述protected修饰符使用之前,先来说一下java,可以发现,开发java程序是一个时时刻刻都在编写类.开发类.定义类的过程.类里面可 ...

  4. java 中的访问修饰符

    一. public:所有类都可以访问 protected:所有子类和同包下的类都可以访问 缺省:同包类都可以访问 private:类本身才可以访问 注意点:protected修饰类属性时,例如 pac ...

  5. java中的访问修饰符 (2013-10-11-163 写的日志迁移

    访问级别                 修饰符                    同类                    同包              子类                 ...

  6. java中的访问修饰符2

    综上所述:protected强调的是子类,deafult强调的是本包,private强调的是本类,public强调的是开放性.

  7. java中4种修饰符访问权限的区别及详解全过程

    java中4种修饰符访问权限的区别及详解全过程 http://jingyan.baidu.com/article/fedf0737700b3335ac8977ca.html java中4中修饰符分别为 ...

  8. 详解Java中的访问控制修饰符(public, protected, default, private)

    Java中的访问控制修饰符已经困惑笔者多时,其中较复杂的情况一直不能理解透彻.今天下定决心,系统.全面地研究Java中的访问控制修饰符的所有方面,并整理成这篇文章,希望有同样疑惑的读者读完后能有所收获 ...

  9. Java学习笔记十九:Java中的访问控制修饰符

    Java中的访问控制修饰符 一:Java修饰符的种类: 访问修饰符 非访问修饰符 修饰符用来定义类.方法或者变量,通常放在语句的最前端.我们通过下面的例子来说明: public class Hello ...

随机推荐

  1. [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计

    源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...

  2. error: Unable to find vcvarsall.bat while install python library by pip install or python setup.py install.

    Python 2.7 会搜索 Visual Studio 2008. 如果你电脑上没有这个版本的话,比如只有: 1.Visual Studio 2010,在cmd里面执行:SET VS90COMNTO ...

  3. 在MacOs上配置Hadoop和Spark环境

    在MacOs上配置hadoop和spark环境 Setting up Hadoop with Spark on MacOs Instructions 准备环境 如果没有brew,先google怎样安装 ...

  4. POJ3090_Visible Lattice Points【欧拉函数】

    Visible Lattice Points Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5653 Accepted: 333 ...

  5. JavaFX基础学习之OkHttp/Gson2

    222 package application; import java.io.IOException; import java.net.URL; import java.util.ResourceB ...

  6. 从MongoDB的ObjectId中获取时间信息

    MongoDB默认使用_id字段作为主键,类型为ObjectId.ObjectId的生成有一定的规则,详情可以查看这篇文章 - MongoDB深究之ObjectId.如果你在写入数据库的时候忘记写入创 ...

  7. python———day03

    一.字符串格式化输出: 占位符    %s(字符串) %d(整数) %f(浮点数,约等于小数) name = input("Name:") age = input("Ag ...

  8. Emgucv学习系列之环境搭建

    Emgucv功能介绍 Emgucv是跨平台的,是Opencv的.net版本.可以对图片.视频等多媒体资源进行加工处理的SDK库. Emgucv下载和安装SDK 下载地址:https://sourcef ...

  9. git reset命令使用

    版本回退 当前有三个commit提交版本commit1commit2commit3Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本上一个版本是HEAD^,上上一个版本是HEAD^^ ...

  10. 搭建ReactNative时的最普遍的错误—— ":CFBundleIdentifier", Does Not Exist

    报错 ":CFBundleIdentifier", Does Not Exist 今天搭建Reactnative 报错 注意当你第一次搭建RN时,包体下载的都是最新的版本,由于现在 ...