内部类:
1、内部类的第一个好处,隐藏你不想让别人知道的操作,也即封装性。
2、非静态内部类对象有着指向其外部类对象的引用 等等。
创建项目:
1、File---->New----->java Project
2、src右键添加 New---->Package(添加一个包,命名为“成员内部类”)
3、包右键添加New----->class/interface
注: 有main(String[] agre)函数的就是运行文件,如果要作为一般类使用,将注释及main(String[] agrs)函数删除。
4、运行:找到相对应的运行文件,右键 Run as ----->java Appliaction
一、成员内部类
因为上面已经建了一个"成员内部类"包,所以包右键添加New----->class(命名为on1)。
on1类:
public class on1 { class tm { public void show() { System.out.println("tt"); }; } public void k() { tm t=new tm(); t.show(); } public static void main(String[] args) { // TODO Auto-generated method stub new on1().k(); } }
效果图:
二、方法内部类
首先src右键添加 New---->Package(添加一个包,命名为方法内部类”),添加两个class分别命名为on1,on2.
on1类:
public class on1 { public void tm() { System.out .println("kkkkkkkkkkkk"); class t extends on2 { } new on2().k(); System.out.println("hhhhhhh"); } public static void main(String[] args) { new on1().tm(); } }
on2类:
public class on2 { public void k() { System.out.println("tttttttttt"); } }
效果图:
三、匿名内部类(Anonymous)
首先src右键添加 New---->Package(添加一个包,命名为匿名内部类”),添加两个class分别命名为on1,on2,添加一接口命名为Infot。
Infot接口:
public interface Infot { public void eve(); }
将on1类变成抽象类。
public abstract class on1 implements Infot{ public void day() { System.out.println("学习"); } }
on2类:
public class on2 { public static void main(String[] args) { //on1 t=new on1(); //t.day(); //t.eve(); //on2 k=new on2(); //k.day(); //k.eve(); Ons t=new Ons() { public void eve(){System.out.println("kkkk");} }; t.eve(); t.day(); } }
效果图:
特点:
成员内部类特点:
在一个外部类的内部且方法外定义的类我们称为外部类 ,该类特点是高度内聚,不对外开放。
方法内部类(局部内部类)特点:
在一个方法内部定义的类我们通常叫做方法内部类或者局部内部类 该类特点是短暂性的,不对外的。
匿名内部类特点:
要满足匿名内部类操作在实现该类操作时必须是一个抽象类或者是一个接口,这样才能使用内部类操作,在实现一个内部类操作时,
同时是重写未实现的方法,也是高内聚的特点。