一、
同一包中的类默认可以相互访问,所以在同一个包中,不能出现类名相同的类。
这里有两个说明:
1、即使是子包和父包也是不同的包,例如com.test 和 com.test.utils 这是两个不同的包。
2、所谓的同一包的类默认访问是指不需要用 import 关键字来引入类,不要和方法、属性、变量的访问
权限混肴。
成员变量和方法的访问权限如下:
private | default | protected | public | |
类内部 | √ | √ | √ | √ |
同包子类 | √ | √ | √ | |
同包非子类 | √ | √ | √ | |
不同包子类 | √ | √ | ||
不同包非子类 | √ |
private:只能类内部不创建对象或创建对象访问
default:包权限(private权限 + 同一包下的访问权限)
protected:包权限 + 子类可以访问父类的方法或属性 (该新增加的功能由于继承的概念只是在类级别概念上增加了访问权限,可以通过super关键字来调用父类的方法,创建对调用方法的话不过不在同一个包下的情况下是不可见的)
public:任何地方都能访问
重要注释:√ 表示只能不创建对象的方式访问
不创建对象访问:指的是通过this或super关键字来调用方法,当然在不创建对象的情况即使没有显
式的调用其实默认前面也是加上了this关键字,因为子类会继承父类的protected方法,所以相当于调用自己的protected方法。
通过这个总结也证明,this和super关键字并不代表对象,只是指明调用的方法是自己的还是父类
的,可以将this和super关键字理解成表示符。
对于包访问权限的解释:
某类的protected方法和属性在包外是不能通过该类对象进行访问的。某类所在的包的以外的任何地方,你不可以通过该类的对象引用来调用它的protected 方法和属性,哪怕是在该类的子类中也不可以这样做。在该类包外的子类中能“看到“的只是子类自己继承来的protected 方法和属性,它是不能“看到“它的父类对象的protected方法和属性的。
从上面这段描述来看一定要把Java中的类和对象区分清楚,完全是两个不同的概念。
二、native 关键字的使用(目前作为遗留)