一、Package包

为了更好的组织类,java提供了包机制,用于区别类名的命名空间。

包的作用:

1、把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。

2、如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名以此来区别。因此,包可以避免名字冲突。

3、包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。

java中使用包这种机制是为了防止命名冲突,访问控制,提供搜索和定位类、接口、枚举、和注释等。

二、在eclipse中怎么创建包

找到需要创建包的java项目---》右键选择new---》Package---》给包命名(命名规则回顾第二章)---》finish

此处创建一个名为automibile的包:

然后我们introduction7包中创建一个BMW的类(每个类中的第一行都注明了该类所属包名):

三、权限修饰符

作用:用于控制被修饰变量、方法、类的可见范围。

public访问级别最高,起次是protected、默认、私有。

1、将前面(以前的章节)创建的Cars类和BMW类移动到automibile包中

2、在新建的automibile包中创建一个名为AccessModifierDome的类,在该类中new一个Cars对象,new完后可能会报错,这是因为在上一节中演示继承时在构造方法中添加了一个参数,所以此处必须在Cars类中写一个默认无参的构造函数(如果未出现此问题可以忽略):

3、默认:new了一个Cars对象后,调用Cars类中的变量speed,该变量权限修饰符为默认的,因为在同一个包中所以能够调用成功。(你们可以将该类移到到其它包中然后再调用该变量,会发现程序报错,出现此原因是因为变量的默认权限只能在同一个包中才能被访问,如果跨包访问,程序就会报错)

4、私有:在Cars类中重新声明一个整形变量,权限为私有

package automibile;

public class Cars {
int speed;
private int privateSpeed;
public Cars() {
this(0);
}
//创建一个构造方法
public Cars(int startSpeed) {
speed = startSpeed;
} //创建一个名为increaseSpeed的方法
public void increaseSpeed() {
speed++;
System.out.println("cars 类的加速。。。");
} //创建一个名为idcreaseSpeed的方法
public void idecreaseSpeed() {
speed--;
System.out.println("cars 类的减速。。。");
}
}

然后我们去AccessModifierDome类中调用这个变量,显示调用不成功,程序报错,因为被private修饰的变量只能在同一个类中被访问,

如果需要对提供访问,可以使用get和set方法,在Cars类中添加如下代码:

package automibile;

import java.util.Set;

public class Cars {
int speed;
private int privateSpeed;
public Cars() {
this(0);
}
public void setprivateSpeed(int privateSpeed) {
this.privateSpeed = privateSpeed;
} public int getprivateSpeed() {
return privateSpeed;
} //创建一个构造方法
public Cars(int startSpeed) {
speed = startSpeed;
} //创建一个名为increaseSpeed的方法
public void increaseSpeed() {
speed++;
System.out.println("cars 类的加速。。。");
} //创建一个名为idcreaseSpeed的方法
public void idecreaseSpeed() {
speed--;
System.out.println("cars 类的减速。。。");
}
}

在AccessModifierDome类中调用:

package automibile;

public class AccessModifierDome {

    public static void main(String[] args) {
Cars c1 = new Cars();
c1.speed = 10;
c1.setprivateSpeed();
System.out.println(c1.getprivateSpeed());
} }

打印结果为:20

5、public公共权限:只要导入了这个包和这个类,在任何其它类中均能访问。

6、protected受保护权限:在Cars中定义一个该类型的变量,将decreaseSpeed方法权限改为私有权限,

我们先在同一个包中的AccessModifierDome类调用,查看是否能调用成功,

然后我们打开包名为introduction7中的InheritanceDemo类,然后调用Cars类中的变量和方法,查看调用是否成功,

接下来我们在继承了Cars类的BMW类中调用(Cars类和BMW在同一个包中),通过实例化和直接调用两种方式查看调用是否成功,

然后我们在同样继承了Cars的Demo类中(Demo属于包名为introduction7中),通过同样的两种方式查看调用是否成功,

总结:受保护权限的变量或只有以下几种方式能被成功调用

1、同包同类

2、同包不同类

3、同包不同类时,调用者和非调用者存在继承关系时,只能直接访问,不能在实例化对象后访问

章节五、2-Package包和权限修饰符的更多相关文章

  1. 匿名类、包、权限修饰符_DAY10

    1:内部类(理解) (1)把类定义在一个类的内部. (2)特点:   A:内部类可以直接使用外部类的成员,包括私有.   B:外部类要使用内部类成员,必须创建对象使用.    例子: public c ...

  2. Java系列学习(十)-包与权限修饰符

    1.形式参数和返回值的问题 (1)形式参数: A:类名:需要该类的对象 B:抽象类名:需要改类的子类对象 C:接口名:需要该接口的实现对象 (2)返回值类型: A:类名:抽象类名:返回的是该类的对象 ...

  3. java(异常体系及权限修饰符)

    java异常体系 异常的体系: 异常体系: --------| Throwable 所有错误或者异常的父类 --------------| Error(错误) --------------| Exce ...

  4. 包和访问权限修饰符,.单例设计模式,.Object类常用方法,.内部类

    1.包和访问权限修饰符 1.1 包 为什么要导包? 将字节码文件(.class)文件进行分类存放 --->包 其实就是文件夹 import java.util.Arrays; 包的划分规则 方案 ...

  5. 零基础学习java------day10------带包编译,权限修饰符,内部类,调式,junitTest

    0.  带包编译 解决使用notepad++编写的java类中如果有package的解决方案,如下代码 package com._51doit.test; class HelloWorld{ publ ...

  6. 关于Java的权限修饰符(public,private,protected,默认friendly)

    以前对访问修饰符总是模棱两可,让自己仔细解释也是经常说不很清楚.这次要彻底的搞清楚. 现在总结如下: 一.概括总结 各个访问修饰符对不同包及其子类,非子类的访问权限 Java访问权限修饰符包含四个:p ...

  7. Java连载50-import导入、访问控制权限修饰符

    一.import 1.import语句用来完成导入其他类,同一个包下的类不需要再导入 不在同一个包下需要手动导入. 2.import语法格式 import 类名: import 包名.*; //imp ...

  8. java中的权限修饰符的理解

    首先了解概念: 在java中有四种权限修饰符:范围从大到小分别是:public.protect.default(friendly).private,它们之间的区别是: public: Java语言中访 ...

  9. java的访问控制(包、访问修饰符、修饰符)

    一.     java的类包 编写好一个源程序后,首先要执行javac命令进行编译源文件,并生成与源文件同名后缀为“.class”的字节码文件(类文件),该类文件与源文件默认在同一个目录中.该类文件是 ...

随机推荐

  1. Oracle nal() 和count(*)的注意点

    select count(*) into fhave from tab_ppxuser where name = userstr;和select nvl(hphotourl, '0') into ph ...

  2. odoo开发笔记 -- tree视图按指定字段group_by分组显示

    注意点: view视图文件中的搜索视图要放在action视图的前边. 在action视图中,要写search_view_id, 还有context, search_default_group_by_字 ...

  3. 什么是web标准??

    web标准 不是某一个标准,而是一系列标准的集合.网页主要由三部分组成:结构(Structure).表现(Presentation)和行为(Behavior).对应的标准也分三方面:结构化标准语言主要 ...

  4. Centos7静默安装Weblogic12C

      1.前言 WebLogic是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发.集成.部署和管理大型分布式W ...

  5. mysql 开发进阶篇系列 43 逻辑备份与恢复(mysqldump 的基于时间和位置的不完全恢复)

    一. 概述 在上篇讲到了逻辑备份,使用mysqldump工具来备份一个库,并使用完全恢复还原了数据库.在结尾也讲到了误操作是不能用完全恢复的.解决办法是:我们需要恢复到误操作之前的状态,然后跳过误操作 ...

  6. 使用TPC-DS工具生成数据

    1.下载工具 两种渠道 a.官网(建议直接跳过-) 地址:http://www.tpc.org/tpc_documents_current_versions/current_specification ...

  7. DNS服务器的搭建

    更详细的dns笔记整理: http://services.linuxpanda.tech/DNS/index.html 1 DNS介绍 DNS(Domain Name System,域名系统),因特网 ...

  8. [CF960G] Bandit Blues

    题意 给你三个正整数 \(n,a,b\),定义 \(A\) 为一个排列中是前缀最大值的数的个数,定义 \(B\) 为一个排列中是后缀最大值的数的个数,求长度为 \(n\) 的排列中满足 \(A = a ...

  9. shell的命令替换和命令组合

    bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html Linux中使用反引号"``"(在波浪线的 ...

  10. win10 uwp 商业游戏 1.2.1

    上一个游戏已经告诉大家如何写多个游戏,现在继续写这个无聊的游戏 希望大家在看这篇文章之前先看win10 uwp 商业游戏,在这个文章告诉了大家如何创建游戏. 修改数值 可以从上一篇的博客的游戏看到升级 ...