6.4内部类:类作为方法的返回值类型,内部类中使用外部类的引用(或称外部类对象)
2017-09-27 17:10
429 查看
一:
[java] view
plain copy
public class OuterClass {
public void
4000
display(){
System.out.println("OuterClass...");
}
public class InnerClass{
public OuterClass getOuterClass(){
return OuterClass.this;
}
}
public static void main(String[] args) {
OuterClass outerClass = new OuterClass();
OuterClass.InnerClass innerClass = outerClass.new InnerClass();
innerClass.getOuterClass().display();
}
}
-------------
Output:
OuterClass...
同时如果我们需要生成对外部类对象的引用,可以使用OuterClassName.this,这样就能够产生一个正确引用外部类的引用了。说白了,OuterClassName.this的作用就是产生一个外部类的对象,而那个方法就是返回这个对象,所以可以直接利用。
二:
[java] view
plain copy
public class OuterClass {
private String str;
public void outerDisplay(){
System.out.println("outerClass...");
}
public class InnerClass{
public void innerDisplay(){
//使用外围内的属性
str = "chenssy...";
System.out.println(str);
//使用外围内的方法
outerDisplay();
}
}
/*推荐使用getxxx()来获取成员内部类,尤其是该内部类的构造函数无参数时 */
public InnerClass getInnerClass(){
return new InnerClass();
}
public static void main(String[] args) {
OuterClass outer = new OuterClass();
OuterClass.InnerClass inner = outer.getInnerClass();
inner.innerDisplay();
}
}
--------------------
chenssy...
outerClass...
在构造内部类的对象时,一般通过传统的:外部类.内部类 内部类对象变量 = 外部类对象.new 内部类();但是上个例子,把“new 内部类()”;给等效替换掉了。注意这种表达方式。
[java] view
plain copy
public class OuterClass {
public void
4000
display(){
System.out.println("OuterClass...");
}
public class InnerClass{
public OuterClass getOuterClass(){
return OuterClass.this;
}
}
public static void main(String[] args) {
OuterClass outerClass = new OuterClass();
OuterClass.InnerClass innerClass = outerClass.new InnerClass();
innerClass.getOuterClass().display();
}
}
-------------
Output:
OuterClass...
同时如果我们需要生成对外部类对象的引用,可以使用OuterClassName.this,这样就能够产生一个正确引用外部类的引用了。说白了,OuterClassName.this的作用就是产生一个外部类的对象,而那个方法就是返回这个对象,所以可以直接利用。
二:
[java] view
plain copy
public class OuterClass {
private String str;
public void outerDisplay(){
System.out.println("outerClass...");
}
public class InnerClass{
public void innerDisplay(){
//使用外围内的属性
str = "chenssy...";
System.out.println(str);
//使用外围内的方法
outerDisplay();
}
}
/*推荐使用getxxx()来获取成员内部类,尤其是该内部类的构造函数无参数时 */
public InnerClass getInnerClass(){
return new InnerClass();
}
public static void main(String[] args) {
OuterClass outer = new OuterClass();
OuterClass.InnerClass inner = outer.getInnerClass();
inner.innerDisplay();
}
}
--------------------
chenssy...
outerClass...
在构造内部类的对象时,一般通过传统的:外部类.内部类 内部类对象变量 = 外部类对象.new 内部类();但是上个例子,把“new 内部类()”;给等效替换掉了。注意这种表达方式。
相关文章推荐
- Effective Java 第三版——47. 优先使用Collection而不是Stream来作为方法的返回类型
- java 引用类型作为方法参数使用问题
- 用类名做方法的返回值类型 在学习Java的初始阶段,很多同学使用基本数据类型定义变量和引用类型定义变量以及使用类名做方法的返回值类型常常不知所以。今天我以自己的解读方式和个人的理解作一个简单的解释,和
- 解决使用VS2010时,引用外部dll时提示,无法嵌入互操作类型“……”,请改用适用的接口的解决方法
- 对引用和指针使用以及函数返回引用和指针类型的理解
- Boost Python 包装C++函数供Python使用时返回值为引用类型的解决方案
- 复习一下基础:'C# 值类型和引用类型 以及作为方法参数的区别'
- 对引用和指针使用以及函数返回引用和指针类型的理解
- 解决 ”不允许在查询中显式构造实体类型“问题及使用其他方法实现返回 List<Model对象>或者IQueryable<Model对象>对象
- php引用详解,php引用传递使用,php引用方法返回,php引用分析!
- Visual C#2005——如何使用ToArray方法返回一个强类型数组
- 问题(怎样在dephi中引用.net中定义的类.方法参数,参数类型为XMLdocument?我要调用此方法并把实例花的xmldocument类型的变量作为参数给它。)
- 匿名内部类使用了一个在其外部定义的对象,为什么编译器会要求其参数引用是final呢
- 链表的Java实现(使用内部类作为指针的引用)
- WCF:使用启用声明的 WCF Web 服务作为 SharePoint 2010 外部内容类型(第4 部分,共 4 部分)
- 对引用和指针使用以及函数返回引用和指针类型的理解
- 基本数据类型或者引用数据类型作为方法参数传递
- 将“引用”作为函数返回值类型的格式、好处和需要遵守的规则?
- php引用详解,php引用传递使用,php引用方法返回,php引用分析!
- 由计算机产生0-9之间的随机整数,用户输入猜测的数据,统计用户猜测的次数。产生随机数可以使用Math.rangom()静态方法,该方法返回正的double类型浮点数位于(0.0 1.0】间。