内部类
1.成员内部类
public class MyouterClass {
//定义外部类属性
String outClass;
//成员内部类
class MyinterClass{
//定义内部类属性
String inClass;
//定义内部类方法
public void inMain(){
System.out.println("这是一个成员内部类的方法。。");
}
}
public void outMain(){
System.out.println("这是一个外部类的方法。。");
}
/*//****在外部类调用成员内部类的方法
public void testOut(){
MyinterClass myinterClass = new MyinterClass();
myinterClass.inMain();
}*/
}
public class Test01 {
public static void main(String[] args) {
//调用MyouterClass对象
MyouterClass out = new MyouterClass();
//创建成员内部类的对象
MyouterClass.MyinterClass in = out.new MyinterClass();
in.inMain();
out.outMain();
/*//****创建外部类的对象
MyouterClass out = new MyouterClass();
out.testOut();*/
}
}
成员内部类调用方法
调用成员内部类 必须用–外部类对象名.new
外部类 对象名1 = new 外部类();
外部类.成员内部类 对象名2 = 对象名1.new 成员内部类();
对象名2.方法名();
2.静态内部类
public class MyouterClass {
//定义外部类属性
String outClass;
//定义静态内部类
static class MyinterClass{
//定义静态内部类中的属性
String inClass;
//定义静态内部类中的属性
public void inMain(){
System.out.println("这是一个静态内部类中的方法");
}
}
//定义外部类方法
public void outMain(){
System.out.println("这是一个外部类中的方法");
}
}
public class Test02 {
public static void main(String[] args) {
//调用静态内部类的对象
MyouterClass.MyinterClass in = new MyouterClass.MyinterClass();
//输出静态内部类的方法
in.inMain();
//调用外部类的对象
MyouterClass out = new MyouterClass();
//输出外部类的方法
out.outMain();
}
}
静态内部类调用方法
外部类.静态内部类 对象名 = new 外部类.静态内部类();
对象名.方法名();
3.局部内部类
public class MyouterClass {
//定义外部类的属性
String outClass;
//定义外部类的方法
public void outMain(){
class MyinterClass{
//定义局部内部类的属性
String inClass;
//定义局部内部类的方法
public void inMain(){
System.out.println("这是一个局部内部类的方法");
}
}
//定义局部内部类的对象
MyinterClass in = new MyinterClass();
in.inMain();
System.out.println("这是一个外部类方法");
}
}
public class Test03 {
public static void main(String[] args) {
MyouterClass out = new MyouterClass();
out.outMain();
}
}
局部内部类调用方法
外部类 对象名 = new 外部类();
对象名.方法名();
4.匿名内部类
interface MyinterClass{
void m1();
}
public class MyouterClass{
//定义外部类的属性
String outClass;
//定义外部类的方法
public void outMain(){
//定义匿名内部类的对象
MyinterClass in;
in = new MyinterClass() {
//定义匿名内部类
@Override
public void m1() {
System.out.println("这是一个匿名内部类的方法");
}
};
in.m1();
}
}
public class Test04 {
public static void main(String[] args) {
MyouterClass out = new MyouterClass();
out.outMain();
}
}
匿名内部类调用方法
先在外部类定义一个接口在
外部类 对象名 = new 外部类();
对象名.方法名();