1 | package animal; |
内部类外部类的相互访问
静态内部类对外部类
静态内部类可以直接访问外部类的静态变量
想要访问实例或者方法的话,需要创建一个实例
非静态内部类访问外部类
非静态内部类访问外部类的静态变量或方法时,直接用变量名称加上方法即可
访问实例和方法时,需要创建一个外部类的实例。
外部类访问内部类:
当外部类访问非静态内部类时
需要通过外部类创建内部类的实例才能够访问
访问静态内部类时,直接用静态内部类创立即可,静态内部类内部的静态变量可以直接通过类名+方法/变量访问
其实这些访问规则都和java的创建方式有关,先加载静态方法,变量,再加载非静态方法变量,因此静态变量在没有创建一个实例之前时可以访问的。
继承和多态
父类的static方法时不能被重写的,但是在子类中却出现了一摸一样函数,这不属于重写,子类的static后是在独立于父类创建了static的空间的另一份空间里面创建的,因此不属于重写范畴,但是当我们去掉子类的static后,操作时发生在父类的static上的空间,因此会报错。
而被private修饰的方法是不能被继承的,所以子类可以定义和父类一样的。
重写的访问权限不能比父类低。
◼ this() 仅在类的构造函数中使用,别的地方不能用
◼ this() 必须是整个构造函数的第一个可执行语句
◼ 用法1:super可被子类用来引用其直接父类
super.父类成员变量或方法 (非private类型)
◼ 用法2:子类调用直接父类构造函数
super( [参数列表] )
◼ 子类对象在创建时,不仅要用调用本类的构造函数,而且还要调用父
类相应的构造函数,且父类构造函数首先调用
◼ 因此,子类构造函数如果不显示地通过super调用父类构造函数,则
系统将自动隐式调用默认的父类构造函数(带0个参数的)
◼ 在这种情况下,如果没有缺省的父类构造函数,将导致编译错误
◼ 静态方法只能调用静态成员( static方法或static数据)
◼ 静态方法是在class装载时首先完成,比构造方法早,此时非静态属性和
方法还没有完成初始化。所以静态方法不能调用非静态方法和属性
◼ 静态方法不能以任何方式引用 this 或 super
◼ 静态方法不需要通过它所属的类的任何实例就可以被调用,因此在静态
方法中不能使用 this 关键字
◼ 和 this 关键字一样,super 关键字也与类的特定实例相关,所以在静态方
法中也不能使用 super 关键字
本文作者: jiangyuhao
本文链接: http://example.com/2022/03/11/%E4%B8%B4%E6%97%B6%E6%8A%B1%E4%BD%9B%E8%84%9A/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!