`

内部类的详细解说

    博客分类:
  • JAVA
阅读更多

                          静态内部类

           成员式的:

                          成员内部类

内部类:

                          局部内部类

           局部式的:

                          匿名内部类

 

 

(1) 静态内部类和成员内部类:相当于外部类中成员变量,与这些变量的方法都是并列的。

(2) A类的存在必须是以B类存在为前提的。 

(3) 所有的访问权限修饰符都不能放在内部类的前面,它前面只能放abstract或者final。

(4) 如果内部类在外部类的方法中定义的(叫做局部内部类) ,则这个内部类只能访问这个方法中的final变量。其它的变量都无法访问的(这个不信你可以试)。即是final int length = 100;

 

静态内部类代码:
package test;
public class StaticInnerClassTest {
	public static void main(String[] args) {
		//第三方类中生成静态内部类对象		
		OuterA.InnerA in = new OuterA.InnerA("Mary",120);
		in.test();
	}
}

class OuterA{
	private static String name = "solo";
	int age;
	public void move(){
		System.out.println("moving...");
		//在外部类中生成静态内部类对象
		InnerA a = new InnerA("Byr",150);
	}
	static class InnerA{
		String name;
		int weight;
		public InnerA(String name,int weight){
			this.name = name;
			this.weight = weight;
		}
		public void test(){
			System.out.println("test()");
			System.out.println(name);
			//访问外部类中同名属性
			System.out.println(OuterA.name);
			System.out.println(weight);
		}
	}
}

 

   

成员内部类代码:
package test;

public class MemberInnerClassTest {
	public static void main(String[] args) {
		OuterB out = new OuterB();
		//在第三方类中如何生成成员内部类对象
		OuterB.InnerB in = out.new InnerB("Mary",120);
		in.test();
		//一个外部类对象,可以生成若干个内部类对象
		OuterB.InnerB in2 = out.new InnerB("Mandy",140);
		in2.test();
	}
}

class OuterB{
	String name = "solo";
	int age;
	public void move(){
		System.out.println("moving...");
	}
	public InnerB test(){
		return this.new InnerB("Lili",150);
		//return new InnerB("Lili",150);
	}
	class InnerB{
		//成员内部类中不能有静态成员
		int weight;
		String name;
		public InnerB(String name,int weight){
			this.name = name;
			this.weight = weight;
		}
		public void test(){
			System.out.println(name);
			System.out.println(weight);
			//访问外部类中的同名属性
			System.out.println(OuterB.this.name);
		}
	}
}

 

局部内部类代码:这里提出一个问题,这个问题也就是演变这个局部内部类LocalInnerClassTest的来源。
                问题是这样的:在外部类OuterC中如何访问内部类InnerC的test方法?
答案就是下面这个:是通过继承来实现的。
package test;

public class LocalInnerClassTest {
	public static void main(String[] args) {
		OuterC out = new OuterC();
//		InnerC in = new InnerC();
		Super o = out.move();
		o.test();
		
	}

}

class OuterC{
	String name;
	int age;
	public Super move(){
		int weight = 100;
		class InnerC extends Super{
			int height;			
			public void test(){
				System.out.println("InnerC...test");
			}
		}
		return new InnerC();
	}
	
}


class Super{
	public void test(){
		System.out.println("Super...test()");
	}
}
 

 

          

分享到:
评论

相关推荐

    类图详细实例解说UML基础教程(内部使用教程)

    类图详细实例解说UML基础教程(内部使用教程) 非常不错的

    AD模块复用详细解说

    AD中关于复用模块的技巧应用方法 希望对大家有帮助

    多图解说电脑机箱内部所有线路连线方法.doc

    多图解说电脑机箱内部所有线路连线方法.doc

    安全路由器组网及IPSec技术详细解说

    安全路由器可以隐藏公司内部的网络拓扑结构图,同时还可以加密需要传输的数据,从而做到即使传输的数据在公网上给其它用户拦截到时,他们也不能通过IP包来获取公司内部的网络IP地址及了解到内部的网络拓扑结构图,...

    芯片内部设计原理和结构

    本文将以DC/DC降压电源芯片为例详细解说一颗电源芯片的内部设计,它和板级的线路设计有何异同?芯片内部的参考电压又被称为带隙基准电压,值为1.2V左右。同时开关电源的基本原理是利用PWM方波来驱动功率MOS管。

    网络信息安全案例解说.doc

    网络信息安全案例解说 1: 攻击者攻破了某个网络目录服务器,由此将对某些服务器的访问定向到攻击者指定的机 器,该机器可能中断客户和服务器之间来往的数据,使客户和服务器双方都没有意识到 第三方的存在,很多...

    atmel系列arm的can 以太网程序

    atmel系列arm的can 以太网程序 每个子函数详细解释,参数详细解说 从内部开始解说,适合门外汉走进内行

    PIC的内部操作EEPROM的子程序

    经典pic的EEPROM程序,详细的解说,是学习必备

    天翼4.3手册

    天翼绝版手册,内部资料,安装手册及详细解说

    Redis集群安装配置加图片详解清晰版

    公司内部技术公司大佬详细解说留下的文档带图片详解等等如有疑问可联系

    DC1000_ComManual30104103en.pdf

    该手册描述了honeywell DC1000 系列温控器 DC1010,DC1020,DC1030,DC1040 的 RS 485 通讯的详细资料,以及温控器内部寄存器的详细解说。

    SAP B1中文培訓教材_SDK

    公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

    ntfs-3g 架构分析文档

    ntfs-3g 架构分析详细解说,包括函数例举-ntfs-3g structure analysis of a detailed explanation, including examples of function

    电动自行车KGC充电器电路原理解说(下)

    (接上期)  4.充电控制电路。  充电器开始充电时,因蓄电池初始电压较低,充电电流较大。...这时IC2 的④脚变为高电平,经IC2 内部的电流限制电路输出高电平控制信号,通过PWM 电路处理使激励脉冲占空比增

    struts2精通

    培训教程,详细解说了内部机制,和大量的使用用例,和strut1的区别,简单易懂。

    LPC1700系列Cortex-M3内核微控制器教学课件

    包含了lpc700系列控制器内部所有功能的详细解说,对初入嵌入式行业,想学习LPC1700系列的人,有所帮助

    apache 配置文件解说

    在Internet时代,外部主页的发布已经成为树立公司形象的一个重要手段,而内部主页也成为公司管理的主要方式。但是,要想实现这些功能,首先应该把我们的Linux Server配置成为一台强大的Web Server。本章将详细介绍...

    stm8s 编程

    对stm8s的内部寄存器和资源做了详细解说,并有简单的使用编程,适合初学者学习,资料覆盖面全

Global site tag (gtag.js) - Google Analytics