课时127:static定义内部类
摘要:
1. 使用 Static 定义内部类
2.Static 定义内部接口的形式
01.使用 Static 定义内部类
1.1 Static 的定义
在内部类上使用 Static 定义,那么这个内部类就变成“外部类 ”,Static 定义的都是独立于类的结构,所以该类结构就是一个独立的程序类。需要注意的是,Static 定义的不管是类还是方法只能够访问 Static 成员,所以 Static 定义的内部类只能够访问外部类中的 Static 属性或方法:
1.2 范例:使用 Static 定义内部类
class Outer { private static final String MSG = "www.mldn.cn" ; static class Inner { public void print () { System.out.println(Outer.MsG) ; } } }
这个时候的 Inner 类是一个独立的类,如果此时要想实例化 Inner 类对象,只需要根据“外部类.内部类”的结构实例化对象即可,格式如下:外部类.内部类 内部类对象 = new 外部类.内部类()
这个时候的类名称带有“.”。
范例:实例化 Static 内部类对象
public class JavaDemo { public static void main(stringargs [] ) { Outer.Inner in =new Outer.Inner() ; in.print () ; } }
02.Static 定义内部接口的形式
2.1 Static 定义的内部类
在开发之中发现类名称上提供有“.”这是一个内部类的结构,如果可以直接进行实例化,则这是一个 Static 定义的内部类。
以 Static 定义内部类的形式并不常用,Static 定义内部接口的形式最为常用。
2.2 范例:使用 Static 定义内部接口
interface IMessageWarp { // 消息包装 static interface IMessage { public string getContent () ; } static interface IChannel { public boolean connect () ; // 消息的发送通道 } Public static void send(IMessage msg,IChannel channel ) { If (channel.connect() ) { System.out.println(msg.getContent () ) ; } else { System.out.println("消息通道无法建立,消息发送失败!") ; } } } class DefaultMessage implements IMessageWarp.IMessage { public String getContent() { return "www.mldn.cn" ; } } class NetChannel implements IMessageWarp.Ichannel { public boolean connect () { return true ; } } public class JavaDemo { public static void main(string args[]) { IMessageWarp.send(new DefaultMessage() , new Netchannel() ) ; } }
2.3总结
使用 Static 可定义的内部接口,是属于一组相关的定义,有了外部接口之后,可以更加明确的描述出这些接口的主要功能。
这些接口都是作为一个统一的管理,所以内部接口在我们日后开发中,它会出现的比较多,而且在系统库学习中也会见到许多的内部接口加 Static 出现形式较多。