day8-9(一)

来源:互联网 发布:南昌seo自动优化软件 编辑:程序博客网 时间:2024/04/29 22:30

Java枚举与内部类

一,枚举

在c语言中,可以使用结构体,枚举,集合,联合,到Java中使用class还保留了枚举并没有结构体和联合枚举用来放置常量
package com.howell.bean;/** * Created by HowellZhang on 2016/8/9. */public class EnumDemo {    public static void main(String[] args) {       // Season season=new Season();//枚举类型不可以被实例化        //0在switch中进行枚举匹配        Season season=Season.SPRING;        switch(season){            case SPRING:                System.out.println("春天来了");                break;            case SUMMER:                System.out.println("夏天来了");                break;            case AUTUMN:                System.out.println("秋天来了");                break;            case WINTER:                System.out.println("冬天来了");                break;            default:                break;        }    }}//接口中可以直接存放枚举interface B{    public void b();    enum EnumOne implements B{        ;        @Override        public void b() {        }    }}enum Season implements B{//--Seanson 等同于类名是枚举名.//枚举可以使用实现不可以使用继承extends    /**     * 四个常量等同于枚举自己调用构造方法四次,构建了四个对象.     * 下面的四个常量不仅是当前枚举的值也是当前枚举的四个对象     * 通常在枚举中放置一系列常量     * 不同类型的常量会把这些常量放置到常量类(抽象的),或接口中     * 如果是相同的类型,如十二个月,星期,会通常放置在枚举中     */     //该种写法的常量必须放在第一行    SPRING("春天",1),SUMMER,AUTUMN,WINTER;//如果枚举中没有方法,末尾可以不加分号,反之必须添加分号    //public Season(){}//error-枚举构造方法不可以使用public,protected.通常选择私有    private Season(){}    private Season(String str,int i){//对应SPRING("春天",1)    }    //枚举可以嵌套枚举    enum Test{}    public Season method(){        return this;    }    @Override    public void b() {    }}

二内部类

package com.howell.bean;/** * Java中内部类经常与C++中的InnerClass,内部类,嵌套类,和局部类进行概念区分 * * * Java中的内部类就是把下面中的4中变量替换成4个class * 在使用上以成员或匿名居多 * Created by HowellZhang on 2016/8/9. */public class InnerClass {    int i;//成员变量    class Inner_A{//--成员内部类,不可以使用静态,无论是方法还是属性    }    static int l;//--静态成员变量    static class Inner_B{//--静态内成员内部类,如果一个类被static修饰,那么这个类一定内部类        //--因为static是属于类的,被修饰的类属于另外一个类    }    public void method(int j){//j形式参数,局部变量        int k=0;//局部变量        class Inner_C{//--写在方法里的类,局部内部类,无论方法静态还是非静态,不可以静态修饰,静态内部类只有一种写法就是静态成员内部类,        }        method(new InnerClass_A(){//匿名内部类,本质上构建对象            //问题,是谁的对象?InnerClass_A的?            //-看不见类的对象:需要补充,记得回去看老师代码!!        });    }    public  void method(InnerClass_A A){    }}class InnerClass_A{    public void showTest(String str){    }}

练习: 练习:在一个类提供4种内部类,各提供方法,进行创建调用

package com.howell.bean;/** * Created by HowellZhang on 2016/8/9. */public class InnerTest {   public class Inner_one{        public void showOne(){            System.out.println("这是成员内部类,hello one");        }    }    public static class Inner_Two{        public  static void showTwo(){            System.out.println("这是静态内部类,hello Two");        }    }    public  void InnerTestShow(){        class Inner_Three{            public  void  showThree(){                System.out.println("这是局部内部类,hello Three");            }        }        Inner_Three inner_three=new Inner_Three();        inner_three.showThree();    }     public interface Inner_Four{        void showFour();    }    public static void main(String[] args) {        Inner_one inner_one=new InnerTest().new Inner_one();        inner_one.showOne();        Inner_Two inner_two=new Inner_Two();        inner_two.showTwo();        InnerTest innerTest=new InnerTest();        innerTest.InnerTestShow();        Inner_Four inner_four=new Inner_Four() {            @Override            public void showFour() {                System.out.println("这是匿名内部类的调用,hello four");            }        };        inner_four.showFour();    }}
0 0
原创粉丝点击