Java面向对象基础--内部类-阿里云开发者社区

开发者社区> 吴英强> 正文

Java面向对象基础--内部类

简介: <h1>1、什么是内部类?</h1> <div>一个类中还存在另外一个类,则成为内部类。</div> <div> <img src="http://img.blog.csdn.net/20130911184634359" alt=""><br> </div> <div> <pre name="code" class="java">class Outer{ // 定义外部类 pr
+关注继续查看

1、什么是内部类?

一个类中还存在另外一个类,则成为内部类。

class Outer{		// 定义外部类
	private String info = "hello world" ;	// 定义外部类的私有属性
	class Inner{	// 定义内部类
		public void print(){				// 定义内部类的方法
			System.out.println(info) ;		// 直接访问外部类的私有属性
		}
	};
	public void fun(){						// 定义外部类的方法
		new Inner().print() ;				// 通过内部类的实例化对象调用方法
	}
};
public class InnerClassDemo01{
	public static void main(String args[]){
		new Outer().fun() ;					// 调用外部类的fun()方法
	}
};

使用内部类的优点:可以方便的访问外部类中的私有属性。

2、使用static声明内部类

如果一个内部类使用static声明,则此内部类就成为外部类,可以直接通过外部类.内部类进行访问。
class Outer{		// 定义外部类
	private static String info = "hello world" ;	// 定义外部类的私有属性
	static class Inner{	// 使用static定义内部类为外部类
		public void print(){				// 定义内部类的方法
			System.out.println(info) ;		// 直接访问外部类的私有属性
		}
	};
	public void fun(){						// 定义外部类的方法
		new Inner().print() ;				// 通过内部类的实例化对象调用方法
	}
};
public class InnerClassDemo03{
	public static void main(String args[]){
		new Outer.Inner().print() ;					// 调用外部类的fun()方法
	}
};

使用static关键字声明的内部类,就称为了外部类,可以直接在类的外部调用。但是,要访问外部类中的属性,则必须是static访问权限。

3、在其他类中访问内部类

一个内部类除了可以通过外部类访问,还可以在其他类中调用。其格式为:
外部类.内部类  内部类对象 = 外部类实例 .new 内部类();
class Outer{		// 定义外部类
	private String info = "hello world" ;	// 定义外部类的私有属性
	class Inner{	// 定义内部类
		public void print(){				// 定义内部类的方法
			System.out.println(info) ;		// 直接访问外部类的私有属性
		}
	};
	public void fun(){						// 定义外部类的方法
		new Inner().print() ;				// 通过内部类的实例化对象调用方法
	}
};
public class InnerClassDemo04{
	public static void main(String args[]){
		Outer out = new Outer()	;			// 外部类实例化对象
		Outer.Inner in = out.new Inner() ;	// 实例化内部类对象
		in.print() ;						// 调用内部类的方法
	}
};

4、在方法中定义内部类

class Outer{		// 定义外部类
	private String info = "hello world" ;	// 定义外部类的私有属性
	public void fun(final int temp){		// 定义外部类的方法
		class Inner{						// 在方法中定义的内部类
			public void print(){				// 定义内部类的方法
				System.out.println("类中的属性:" + info) ;		// 直接访问外部类的私有属性
				System.out.println("方法中的参数:" + temp) ;
			}
		};
		new Inner().print() ;				// 通过内部类的实例化对象调用方法
	}
};
public class InnerClassDemo05{
	public static void main(String args[]){
		new Outer().fun(30) ;	// 调用外部类的方法
	}
};


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
C#基础知识-对象初始化顺序
本文章转载:http://blog.csdn.net/forever_wind/article/details/7442503 不错的文章:http://www.cnblogs.com/McJeremy/archive/2009/04/23/1442163.
517 0
java之路,基础知识----内部类
内部类:在类的内部定义另一个类,方便访问外部类的所有的成员。内部类可以嵌套,但是如果定义在方法之内,那么他的作用域就在方法中,出了方法就不能使用了。必须先产生外部类对象,然后产生内部类对象 class out {     private int index = 100;   ...
595 0
《21天学通Java(第6版)》—— 1.3 对象和类
面向对象编程是基于现实世界的情况进行建模的,对象由多种更小的对象构成。
1263 0
Apache Flink 零基础入门(七):Table API 编程
本文主要包含三部分:第一部分,主要介绍什么是 Table API,从概念角度进行分析,让大家有一个感性的认识;第二部分,从代码的层面介绍怎么使用 Table API;第三部分,介绍 Table API 近期的动态。
1824 0
03.Java基础(线程池和Callable<T>)
在以往的工作中,创建线程通常我们关注的都是Thread或者Runnable为主,其实忽略了另外一个比较有用的创建线程的方式,就是Callable接口,下边是Callable配合线程池实现异步任务 import java.
760 0
Java基础-10总结形式参数,包,修饰符,内部类
你需要的是什么,直接评论留言。 获取更多资源加微信公众号“Java帮帮” (是公众号,不是微信好友哦) 还有“Java帮帮”今日头条号,技术文章与新闻,每日更新,欢迎阅读 学习交流请加Java帮帮交流QQ群553841695 分享是一种美德,分享更快乐! 类,抽象类,接口的综合小练习 /* 教练和运动员案例(学生分析然后讲解
1141 0
Java基础-15总结对象数组,集合Collection,集合List
你需要的是什么,直接评论留言。 获取更多资源加微信公众号“Java帮帮” (是公众号,不是微信好友哦) 还有“Java帮帮”今日头条号,技术文章与新闻,每日更新,欢迎阅读 学习交流请加Java帮帮交流QQ群553841695 分享是一种美德,分享更快乐! 1:对象数组(掌握) (1)数组既可以存储基本数据类型,也可以存储引用类型。它存储引
1757 0
+关注
329
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载