内部类
成员内部类
package com.FreeGiao.OutIn; public class out { private int num = 10; // public class inner{ // public void show(){ // System.out.println(num); // System.out.println("这是内部类"); // } // } private class inner { public void show() { System.out.println(num); System.out.println("这是内部类"); } } public void method(){ inner io = new inner(); io.show(); } } package com.FreeGiao.OutIn; public class test01 { public static void main(String[] args) { //针对内部类是public的时候可以使用 // out.inner oi = new out().new inner(); // oi.show(); // out ss = new out(); // ss.show(); out oi = new out(); oi.method(); } }
局部内部类
package com.FreeGiao.OutIn; public class outer { private int num = 10; public void method(){ class inner{ public void show(){ System.out.println(num); } } inner inner = new inner(); inner.show(); } } package com.FreeGiao.OutIn; public class test02 { public static void main(String[] args) { outer outer = new outer(); outer.method(); } }
匿名内部类
前提:存在一个类或者接口,这里的类可以是具体的类也可以是抽象类
本质:是一个继承了该类或者实现了该接口的子类匿名对象
package com.FreeGiao.OutIn; public class outer01 { private int num = 0; public void method(){ new Inter(){ @Override public void show() { System.out.println(num); } }.show(); Inter inter = new Inter() {//是一个继承了该类或者实现了该接口的子类匿名对象 @Override public void show() { System.out.println(num); } }; inter.show();//是一个继承了该类或者实现了该接口的子类匿名对象 Lei lei = new Lei() { @Override public void gg() { super.gg(); } }; lei.gg(); } } package com.FreeGiao.OutIn; public class Lei { public void gg(){ System.out.println("我爱你"); } } package com.FreeGiao.OutIn; public interface Inter { void show(); } package com.FreeGiao.OutIn; public class test03 { public static void main(String[] args) { outer01 outer01 = new outer01(); outer01.method(); } }
匿名内部类在开发中的使用
package com.FreeGiao.OutIn; public interface Jumping { void jump(); } package com.FreeGiao.OutIn; public class JumpingOperator { public void method(Jumping j){ j.jump(); } } package com.FreeGiao.OutIn; public class Cat implements Jumping { @Override public void jump() { System.out.println("猫咪可以跳高了!"); } } package com.FreeGiao.OutIn; public class JumpingDemo { public static void main(String[] args) { JumpingOperator dd = new JumpingOperator(); Jumping ff = new Cat(); dd.method(ff); dd.method(new Jumping() { @Override public void jump() { System.out.println("猫咪可以跳高了"); } }); dd.method(new Jumping() { @Override public void jump() { System.out.println("小狗可以调高了!"); } }); } }