Java的一些高级特性(三)——类部分

来源:互联网 发布:华安股票交易软件 编辑:程序博客网 时间:2024/05/01 08:23

首先我们来看看成员类。Member Class指的是这个class是作为另一个类的成员(或者称之为属性)存在的,例如代码:

package com.freesoft.java7newfeature;public class TestClass {public static void main(String[] args) {TestClass t = new TestClass();t.TestMember();}public void TestMember() {MemberClass m = new MemberClass("MemberClass Test");System.out.println(m);}class MemberClass {private String name;public MemberClass(String name) {this.name = name;}@Overridepublic String toString() {return "MemberClass [name=" + name + "]";}}}

下面我们来看看(Local) Inner Class。之所以将Local括号括起来是因为没有outter/remote inner class。Inner Class的意思是创建在方法体中的类代码块,例如代码:

public void TestMember() {MemberClass m = new MemberClass("MemberClass Test");System.out.println(m);class LocalInnerClass {private String name;public LocalInnerClass(String name) {this.name = name;}@Overridepublic String toString() {return "LocalInnerClass [name=" + name + "]";}}LocalInnerClass i = new LocalInnerClass("InnerClass Test");System.out.println(i);}

有了Inner Clas我们当然需要Anonymous Inner Class。这个类仍然是一个Inner Class,不过特别的是这个类没有定义一个名字(主要是有两种情况:一种是这个类实在太简单,没必要重新创建一个外部类;另一种情况是这个类的实现仅在此处有效,例如Android中的界面元素的事件响应处理),此时我们需要使用匿名内部类,如:

public void TestMember() {MemberClass m = new MemberClass("MemberClass Test");System.out.println(m);//class LocalInnerClass {//private String name;//public LocalInnerClass(String name) {//this.name = name;//}//@Override//public String toString() {//return "LocalInnerClass [name=" + name + "]";//}//}////LocalInnerClass i = new LocalInnerClass("InnerClass Test");//System.out.println(i);System.out.println(new Object(){@Overridepublic String toString() {return "Anonymous Inner Class.";}});}

最后我们看一下一个特殊的类:enum,这个例子和我们平常使用enum时仅仅使用枚举值不同的是,我们还可以对EnumOliveArea这个类的对象toString(),当然你还可以扩充别的方法:

package com.freesoft.testentity;public enum EnumOliveArea {// 这些是enum的实例,可以看到创建实例时使用了ConstructorKALAMARA("Kalamara"), LIGURIO("Liguirio"), PICHOLINE("Pichooline"), GOLDEN("Golden");private String name;private EnumOliveArea(String name) {this.name = name;}@Overridepublic String toString(){return name;}}



原创粉丝点击