最近在写应用时,对包与包之间方法的调用不太清楚,专门看视频和网站后整理了这篇文章,希望对刚入门的同志有所帮助,进入主题。

首先我们先简单看看Java中private、protected、public和default的主要区别:(看不懂没关系,有个印象就行,然后往下看)

java 不同类 同一变量 java同包不同类的调用_基础


我们将其分为两种情况:

一  同一个包中不同类

1通过导入类后new个对象。2继承(一般用protected,同个包作用不大,只限覆盖方法)

二 不同包之间方法的调用

1 直接调用


java 不同类 同一变量 java同包不同类的调用_Android_02

java 不同类 同一变量 java同包不同类的调用_初级_03

java 不同类 同一变量 java同包不同类的调用_java 不同类 同一变量_04


这是个简单的例子,testb包中的DemoB,调用了testa包中的DemoA中的look方法

DemoB想调用look方法,首先DemoA需要public出来,即红框中的1,其次look方法也需要public出来,即2中所标出的,这里只能用public,正体现出第一张给的图的作用。

红框3需要注意的是,类名的全称为包名+类名。我们为了简化写法,就引入了Import关键字,(import  testa.*   表示导入包testa的所有类)于是DemoB也可以写成:

java 不同类 同一变量 java同包不同类的调用_java 不同类 同一变量_05

2

DemoA保持不变,DemoB变成

java 不同类 同一变量 java同包不同类的调用_Java_06

然而,DemoB继承父类DemoA,父类为了只让子类DemoB使用look方法,就出现了protected关键字,于是,只允许继承才能使用。如下:

java 不同类 同一变量 java同包不同类的调用_Android_07


最后,还有两个关键字private和default没涉及到,private只能限定在同个类里面。如果类前面不加修饰,就默认为default,限定在同个包内。

Java修饰词共有11个,具体的简单介绍请看   

有什么问题欢迎留言讨论交流,谢谢。