您的位置:首页 > 其它

内部类的作用?1、抽象类中包含一个内部接口如何实现与调用 ;2、接口中包含一个内部抽象类如何调用

2018-01-01 00:40 651 查看
内部类作用:

1、可以直接调用外部类的私有成员变量

package com.swift;

public class Neibulei
{
public static void main(String[] args)
{
new Outer("swift").getprint();
}
}
class Outer
{
private String name;
public Outer(String name)
{
this.name=name;
}
public void getprint()
{
new Inner().print();
}
class Inner
{
public void print()
{
System.out.println("The name is "+name);
}
}
}


否则,如果内部类在外边则需要进行复杂的参数传递

参数传递法如下:

package com.swift;

public class Neibulei2
{
public static void main(String[] args)
{
Outer2 o2=new Outer2("swift");
o2.getprint(o2);
}
}
class Outer2
{
private String name;
public Outer2(String name)
{
this.name=name;
}
public void getprint(Outer2 o2)
{
new Inner2().pr
4000
int(o2);
}
public String getName()
{
return this.name;
}

}
class Inner2
{
public void print(Outer2 o2)
{
System.out.println("The name is "+o2.getName());
}
}


或者也可以用构造方法通过this关键字传递

package com.swift;

class Neibulei3
{
public static void main(String[] args)
{
new Outer3("swift").getprint();
}
}
class Outer3
{
private String name;
public Outer3(String name)
{
this.name=name;

}
public void getprint()
{
new Inner3(this).print();
}
public String getName()
{
return this.name;
}

}
class Inner3
{
private Outer3 outer;
public Inner3(Outer3 outer)
{
this.outer=outer;
}
public void print()
{
System.out.println("The name is "+outer.getName());
}
}


也可以这样写

package com.swift;

public class Neibulei4
{
public static void main(String[] args)
{

Outer4.Inner4 in= new Outer4().new Inner4();
in.print();
}
}
class Outer4
{
private String name="swift";

class Inner4
{
public void print()
{
System.out.println("The name is "+name);
}
}

}


所以一个篇代码也可以改写成如下

new Outer("swift").new Inner().print();

或者

Outer.Inner in=new Outer("swift").new Inner();
in.print();

同时内部也可以放在外部类的方法当中

package com.swift;

public class Neibu {
public static void main(String[] args) {
new Out().fun(100);
}
}
class Out {
private String name = "swift";
public void fun(int temp) {
class In {
public void print() {
System.out.println("temp =" + temp);
System.out.println("the name is " + name);
}
}
new In().print();
}
}


 

1、抽象类中包含一个内部接口如何实现与调用



 

 

2、接口中包含一个内部抽象类如何调用



 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐