Java面向对象高级特性-普通-静态-局部-内部类
原创约 1020 字大约 3 分钟...
208-Java面向对象高级特性-普通-静态-局部-内部类.md
注意
本博文仅供学术研究和交流参考,严禁将其用于商业用途。如因违规使用产生的任何法律问题,使用者需自行负责。
概念
示例代码
- 普通内部类
package com.tencent.chapter07.内部类;
/**
* <p>Title: Outer</p>
* <p>
* Description:
内部类:定义在一个类中的类,即嵌套类
注意:
1.内部类可以访问外部类所有的属性与方法,不需要创建对象
2.外部类访问内部类的属性或方法时,必须创建对象
① 在类中访问:
Inner inner = new Inner();
inner.innerMethod();
② 在类以外访问内部类
Outer outer = new Outer();
Inner inner = outer.new Inner();
3.如果内部类与外部类的属性或方法重名,内部类的优先级 > 外部类的优先级
4.不能定义static变量
外部类修饰符:public <default>
内部类修饰符:public protected <default> private
//外部类
* </p>
* @author xianxian
* @date 2023年1月4日
*/
public class Outer {
//外部类属性
int outerNum = 10;
int x = 666;
//外部类方法
public void outerMethod()
{
System.out.println("Outer.outerMethod()...");
}
//内部类
class Inner
{
//内部类属性
int innerNum = 20;
int x = 888;
//static int y = 99;//定义静态变量
//内部类方法
public void innerMethod()
{
System.out.println("outerNum:" + outerNum);
outerMethod();
System.out.println("Inner.x :" + x); //内部类变量
System.out.println("Outer.x :" + Outer.this.x); //外部类变量
}
}
//在类中访问内部类的属性与方法
public void showInner()
{
Inner inner = new Inner();
System.out.println("innerNum:" + inner.innerNum);
inner.innerMethod();
}
public static void main(String[] args) {
//在类中访问内部类
//Outer outer = new Outer();
//outer.showInner();
//在类以外访问内部类
Outer outer = new Outer();
Inner inner = outer.new Inner();
inner.innerMethod();
}
}
- 静态内部类
package com.tencent.chapter07.内部类;
/**
* <p>Title: OuterStatic</p>
* <p>
* Description:
*
静态内部类:定义在一个类中的类,即嵌套类,且使用static修饰
注意:
1. 不能访问外部类非静态成员
2. 非静态内部类只能定义非静态成员,而静态内部类可以定义静态成员和非静态成员
3. 实例化
① 在类中访问:
Inner inner = new Inner();
inner.innerMethod();
② 在类以外访问内部类
OuterStatic.Inner inner = new OuterStatic.Inner();
inner.innerMethod();
*
//外部类
* </p>
* @author xianxian
* @date 2023年1月4日
*/
public class OuterStatic {
//外部类属性
static int outerNum = 10;
static int x = 666;
//外部类方法
public static void outerMethod()
{
System.out.println("Outer.outerMethod()...");
}
//内部类
static class Inner
{
//内部类属性
int innerNum = 20;
int x = 888;
static int y = 99;//定义静态变量
//内部类方法
public void innerMethod()
{
System.out.println("outerNum:" + outerNum);
outerMethod();
System.out.println("Inner.x :" + x); //内部类变量
System.out.println("Outer.x :" + OuterStatic.x); //外部类变量
}
}
//在类中访问内部类的属性与方法
public void showInner()
{
Inner inner = new Inner();
System.out.println("innerNum:" + inner.innerNum);
inner.innerMethod();
}
public static void main(String[] args) {
//在类中访问内部类
/*OuterStatic outer = new OuterStatic();
outer.showInner();*/
//在类以外访问内部类
OuterStatic.Inner inner = new OuterStatic.Inner();
inner.innerMethod();
}
}
- 局部内部类
package com.tencent.chapter07.内部类;
/**
* <p>Title: OuterLocal</p>
* <p>
* Description:
**
局部内部类:定义在一个方法中的类
注意:
1.在方法定义的内部类中只能访问方法中的final类型的局部变量
*
//外部类
* </p>
* @author xianxian
* @date 2023年1月4日
*/
public class OuterLocal {
//外部类属性
int outerNum = 10;
int x = 666;
//外部类方法
public void outerMethod()
{
System.out.println("Outer.outerMethod()...");
final String username = "scott";
//局部内部类
class Inner
{
//内部类属性
int innerNum = 20;
int x = 888;
//static int y = 99;//定义静态变量
//内部类方法
public void innerMethod()
{
System.out.println("outerNum:" + outerNum);
//outerMethod();
System.out.println("Inner.x :" + x); //内部类变量
System.out.println("Outer.x :" + OuterLocal.this.x); //外部类变量
System.out.println("outerMethod.username : " + username);
}
}
//实例化内部化
Inner inner = new Inner();
inner.innerMethod();
}
public static void main(String[] args) {
//在类中访问内部类
OuterLocal outer = new OuterLocal();
outer.outerMethod();
}
}
分割线
相关信息
以上就是我关于 Java面向对象高级特性-普通-静态-局部-内部类 知识点的整理与总结的全部内容,希望对你有帮助。。。。。。。
Powered by Waline v2.15.4