摘要:韦东山android视频学习笔记 

1、使用package定义编译的时候存放的位置

 package a.b.c.d;

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

编译运行的命令如下:

2、下图大致写出了引入包的作用,假如有两个人写了同样的一个类Math类,里面实现了不同的运算方法,我们可以通过目录来区分开来。

代码主体的架构,lisi只实现了加法运算,zhangsan实现了加法的运算并且在运行结果上+2,且张三实现了减法运行。Package类通过import调用lisi和zhangsan不同的包。

lisi的Math.java代码如下 

 package a.b.c.d1;

 public class Math{
public static int add(int x,int y){
return x + y;
}
}

zhangsan的Math.java代码如下:

package a.b.c.d2;

public class Math{
public static int add(int x,int y){
return x + y + 2;
} public static int sub(int x,int y){
return x - y;
}
}

Package.java代码如下

 import a.b.c.d1.*;
import a.b.c.d2.*; public class Package {
public static void main(String args[]){
System.out.println(a.b.c.d1.Math.add(1,2));
System.out.println(a.b.c.d2.Math.add(1,2)); System.out.println(a.b.c.d2.Math.sub(1,2));
}
}

编译运行结果如下:

3、在上述的代码基础上在张三目录添加Print.java类,用于打印信息,在Package.java类中,可以通过包名来使用类的方法,如果该方法没有同名的类方法,可以不使用包名直接使用该方法.

Print.java

 package a.b.c.d2;

 public class Print{
public static void printInfo(){
System.out.println("package a.b.c.d2;");
}
}

Package.java

 import a.b.c.d1.*;
import a.b.c.d2.*; public class Package {
public static void main(String args[]){
System.out.println(a.b.c.d1.Math.add(1,2));
System.out.println(a.b.c.d2.Math.add(1,2)); System.out.println(a.b.c.d2.Math.sub(1,2)); a.b.c.d2.Print.printInfo();
Print.printInfo();
}
}

编译运行结果

4、张三、李四开发的代码,在编译之后都生成在a目录下面,我们可以把a目录打包成jar包之后,给用户,这样也可以不用开源自己的代码。使用jar把a目录压缩成jar包,并且在环境变量中添加my.jar包,主程序Package就可以使用,张三和李四实现的方法了。

5、访问权限,

public class可以被外包访问,class只能在本包中访问

Mymath.java

 package b;

 //class Mymath{  编译失败
public class Mymath{
}

Pack.java

 package a;

 public class Pack{
public static void main(String args[]){
Mymath m = new Mymath();
}
}

编译java包失败,需要把Mymath定义成public才可以编译通

重新编译

6、将5的代码Mymath类也定义在包a中,那样Mymath没有加public也可以在pack类中访问

Mymath.java 

 package a;

 class Mymath{

 //public class Mymath{

 }

Pack.java

 package a;
//import b.*; public class Pack{
public static void main(String args[]){
Mymath m = new Mymath();
}
}

编译结果:

7、同一个包中,一个类的属性定义为private,无法被另外一个类访问。去掉private为默认属性,可以被另外一个类访问。

Mymath.java

 package a;

 class Mymath{
private int x;
//int x; 去掉private则可以编译通过
}

Pack.java

 package a;
//import b.*; public class Pack{
public static void main(String args[]){
Mymath m = new Mymath();
m.x = 0;
}
}

编译运行结果

8、使用protect定义属性,本包、其他包的子类可访问

Mymath.java

 package b;

 public class Mymath{
protected int x;
}

Pack.java

 package a;
import b.*; class Mysubmath extends Mymath{
void printInfo(){
System.out.println("Mysubmath: x = " + x);
}
} public class Pack{
public static void main(String args[]){
Mysubmath m = new Mysubmath();
//m.x = 0;
m.printInfo();
}
}

编译运行结果

相关代码存放在github,可以下载https://github.com/zzb2760715357/100ask

第2课第6节_Java面向对象编程_包和权限_P【学习笔记】的更多相关文章

  1. 第2课第1节_Java面向对象编程_类的引入_P【学习笔记】

    摘要:韦东山android视频学习笔记 1. 面向对象编程的引入,我们先写一个简单的程序输出张三,李四的名字.代码如下,假如,现在我们要在名字前面添加籍贯广东,那样岂不是每个printf语句都得修改添 ...

  2. 第2课第3节_Java面向对象编程_继承性_P【学习笔记】

    摘要:韦东山android视频学习笔记  面向对象程序的三大特性之继承性:继承性的主要作用就是复用代码.继承性也有一定的限制,如图一 图一 1.我们在第2课第2节_Java面向对象编程_封装性_P 中 ...

  3. 第2课第4节_Java面向对象编程_多态性_P【学习笔记】

    摘要:韦东山android视频学习笔记  面向对象程序的三大特性之继承性: 1.向上转换:只能定义被子类覆写的方法,不能调用在子类中定义的方法. class Father { private int ...

  4. 第2课第2节_Java面向对象编程_封装性_P【学习笔记】

    摘要:韦东山android视频学习笔记  面向对象程序的三大特性之封装性:把属性和方法封装在一个整体,同时添加权限访问. 1.封装性的简单程序如下,看一下第19行,如果我们不对age变量进行权限的管控 ...

  5. 第2课第7节_Java面向对象编程_内部类_P【学习笔记】

    摘要:韦东山android视频学习笔记  1.什么是内部类:在类的内部定义一个类,内部类可以访问类的私有属性 class Outer{ ; class Inner{ public void print ...

  6. 第2课第5节_Java面向对象编程_异常_P【学习笔记】

    摘要:韦东山android视频学习笔记  java的异常处理的原则如下: 1.我们先写一个没有对异常处理的程序,在进行除法运算的时候,除数是非零的话,运行时没有问题的,但是除数为零的时候,运行就会有问 ...

  7. Python 进阶_OOP 面向对象编程_组合与继承

    #目录 前言 组合 派生 通过继承来覆盖重载方法 最常用的重载场景实例方法的重载 从标准类中派生类方法的重载 前言 我们定义一个类是希望能够把类当成模块来使用,并把类嵌入到我们的应用代码中,与其他的数 ...

  8. lua面向对象编程 《lua程序设计》 16章 笔记

    Lua中的table就是一种对象,即它拥有状态.拥有独立于其值的标识(self).table与对象一样具有独立于创建者和创建地的征集周期 什么叫对象拥有独立的生命周期? Account = {bala ...

  9. 面向对象编程(OOP)的五大特征-java学习之旅(1)

    这是Alan Kay关于第一个成功的面向对象语言SmallTalk的总结: 1.所有的东西都是对象.可将对象想象成一种新型的变量:它保存着数据,但是可要求它对自身进行操作,理论上讲,可从要解决的问题身 ...

随机推荐

  1. Telnet入侵Windows2000

    开启Telnet 打开控制面板,管理工具 计算机管理 连接刚刚探测到的主机 输入探测到的主机IP 如下图所示,连接成功 找到Telnet服务 启动Telnet服务 远程登录 注意 Telnet登录需要 ...

  2. 在地址栏里输入一个 URL后,按下 Enter 到这个页面呈现出来,中间会发生什么?

    这是一个面试高频的问题 在输入 URL 后,首先需要找到这个 URL 域名的服务器 IP,为了寻找这个 IP,浏览器首先会寻找缓存,查看缓存中是否有记录,缓存的查找记录为:浏览器缓存 ->系统缓 ...

  3. Linux 计划任务管理

    实际的生产环境中,总会做一些定期的任务,比如数据备份,我们不可能总等到那个时间去手动执行,这时计划任务就派上用场了. 一次性计划任务 at 一次性计划任务 at [HH:MM] [YYYY-MM-DD ...

  4. 查看zookeeper版本

    命令 echo stat|nc localhost 2181 zookeeper@kafka-zookeeper-0:/$ echo stat|nc localhost 2181 Zookeeper ...

  5. linux设备驱动程序-设备树(0)-dtb格式

    linux设备树dtb格式 设备树的一般操作方式是:开发人员根据开发需求编写dts文件,然后使用dtc将dts编译成dtb文件. dts文件是文本格式的文件,而dtb是二进制文件,在linux启动时被 ...

  6. django项目登录中使用图片验证码

    应用下创建untils文件夹放置封装图片验证码的函数 创建validCode.py文件定义验证码规则 import random def get_random_color(): return (ran ...

  7. KClass与函数引用详解

    继续学习Kotlin反射相关的东东. KClass: 在上一次是通过类来获取它的KClass对象: 那如果是一个对象呢?与这个对象对应的类的KClass对象又是如何获取的呢?像Java也是一样有相关机 ...

  8. 用Python添加写入数据到已经存在的Excel的xlsx文件

    # coding:utf-8 from openpyxl import load_workbook import openpyxl # 写入已存在的xlsx文件第一种方法 # class Write_ ...

  9. jdk8的32位下载

    下载地址:http://www.wmzhe.com/soft-30119.html#download

  10. 在命令行中执行kms命令激活Microsoft Office 2010

    激活office2010的命令是什么?激活office2010除了使用office2010激活工具之外,还可以使用kms命令来激活office2010,但是office2010激活命令还需考虑32位或 ...