JAVASE.內部類

1內部類

內部類是指在一個類中包含另一個類,其中外面的類叫做外部類,裏面的叫做內部類
成員內部類及特點
成員內部類可以直接無條件訪問外部類的任何成員
在外部類中不能直接調用內部類的方法成員
代碼實現:

	
public class Animal {
    private String name;
    private int age;

    public Animal() {
    }

    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }

    class cat {
        int mousecount;
        public void mouse() {
            System.out.println("我會捉老鼠,我是一隻貓");
            System.out.println(name);
            System.out.println(age);
            eat();
            
        }
    }

    public void eat() {
        System.out.println("喫");
        
    }
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

在測試類中創建成員內部類條件

	public class Test01 {
    public static void main(String[] args) {
        //方法一:
        Animal a = new Animal();
        Animal.cat cat1 = a.new cat();
        System.out.println(cat1);
        //方法二
        Animal.cat cat = new Animal().new cat();
        System.out.println(cat);
        
    }
}


2.匿名內部類

匿名內部類是內部類的簡化形式
不需要寫類的名稱
用途快速創建一個父類的子類或者接口的實現類對象
繼承的匿名內部類代碼實現:

public class TestStudent {
    public static void main(String[] args) {
        Student s = new Student();
        s.drink();
        s.eat();
        Person p = new Person() {
            @Override
            public void eat() {
                System.out.println("重寫的喫");
            }

            @Override
            public void drink() {
                System.out.println("重寫的喝");
            }
        };
        p.drink();
        p.eat();

    }
}


接口的匿名內部類代碼實現:

package com.ithema.Text06;

public interface Fly {
    public abstract void fly();
}
package com.ithema.Text06;

public class SuperPerson implements Fly {

    @Override
    public void fly() {
        System.out.println("超人會飛");

    }
}
package com.ithema.Text06;

public class TextSuperPerson {
    public static void main(String[] args) {
        SuperPerson sp = new SuperPerson();
        sp.fly();
        //匿名內部類實現

        new Fly() {

            @Override
            public void fly() {
                System.out.println("匿名內部類的超人會飛");

            }
        }.fly();
    }
}


匿名內部類的格式總結:
父類名/接口名 對象名 = new 父類名/接口名(){
//重寫的方法
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章