Java面向对象高级特性-普通-静态-局部-内部类

涎涎原创约 1020 字大约 3 分钟...JavaJava

208-Java面向对象高级特性-普通-静态-局部-内部类.mdopen in new window

注意

本博文仅供学术研究和交流参考,严禁将其用于商业用途。如因违规使用产生的任何法律问题,使用者需自行负责。

概念

示例代码

  • 普通内部类
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