Java学习笔记五(内部类 ) - zxjay - 博客园
Wednesday, March 15, 2017
1:36 PM
Java学习笔记五(内部类 )
1 内部类的优缺点
在一个类的内部还存在另外一个类,则成为内部类。内部类可以是public 或者private,对其访问的控制与类的成员变量和 成员方法相同。
内部类的缺点:内部类其实严重破坏了良好的代码结构
内部类的优点:方便的访问外部类中的私有属性;将内部类拿到外部之后,代码会增加,复杂度也会增加;
2 基本的内部类结构

class Outer{
private String info = “Hello outer inner class”;
class Inner{
public void print(){
System.out.println(info);
}
}
public void fun(){
System.out.println(“Outer class fun”);
new Inner().print();
}
}
public class InnerDemo {
public static void main(String [] args){
//定义内部类
Outer.Inner in = null;
in =new Outer().new Inner();
in.print();
new Outer().fun();
new Outer().new Inner().print();
}
}

特点分析:定义内部类的时候必须指定所属的外部类;必须先实例化外部类,才能实例化内部类;
3 static 声明的内部类

class Outer{
private static String info = “Hello outer class”;
static class Inner{
public void print(){
System.out.println(info);
}
};
public void fun(){
new Inner().print();
}
}
public class InnerDemo{
public static void main(String []args){
//定义方式
Outer.Inner in = null;
// in = new Outer().new Inner();// 错误的方式
in = new Outer.Inner();
in.print();
new Outer.Inner().print();
}
}

特点分析:可以直接通过外部类.内部类直接访问,具有一定的局限性,内部类只能访问外部类的静态数据成员。
4私有内部类

class Outer{
private String info = “Hello outer class”;
private class Inner{
public void print(){
System.out.println(info);
}
};
public void fun(){
new Inner().print();
}
}
public class InnerDemo{
public static void main(String []args){
/定义方式错误
Outer.Inner in = null;
in = new Outer().Inner();
in.print();
/
new Outer().fun();
}
}

特点分析:如果一个内部类只希望被外部类进行访问,可以使用private来声明内部类;必须在外部类中生成内部类进行操作,不能使用new Outer().new Inner()进行定义。
5 在类的方法中定义的内部类

class Outer{
private String info = “Hello outer class”;
//无参数的方法
public void fun(){
class Inner1{
public void print(){
System.out.println(info);
}
}
new Inner1().print();
}
//有参数的方法
public void fun(final String str){
class Inner2{
public void print(){
System.out.println(info);
System.out.println(str);
}
}
new Inner2().print();
}
};
public class InnerDemo{
public static void main(String []args){
new Outer().fun();
new Outer().fun(“zhang”);
}
}

特点分析:在外部类的方法中生成一个内部类去调用内部类中的方法;如果外部类的方法中需要传递参数,参数的类型必须为final。
分类: Java
标签: Java 基础语法 面向对象 内部类
好文要顶 关注我 收藏该文



zxjay
关注 - 2
粉丝 - 3
+加关注
0
0
« 上一篇:Java学习笔记四(代码块 )
posted @ 2014-11-26 21:15 zxjay 阅读(453) 评论(0) 编辑 收藏
已使用 Microsoft OneNote 2016 创建。
