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 父類名/接口名(){
//重寫的方法
}