嵌套类
在百度百科上是这样定义的:
嵌套类(Nested Class),是 Java 中对类的一种定义方式。嵌套类分为两种:静态嵌套类和非静态嵌套类。非静态嵌套类,又称为内部类(Inner Class)。
内部类
内部类(Inner Class),是 Java 中对类的一种定义方式,是嵌套类的一个分类,即非静态嵌套类(Non-Static Nested Class)。内部类(非静态嵌套类)分为成员内部类、局部内部类和匿名内部类三种。
成员内部类
注意: 1.成员内部类可以访问外部类所有的属性和方法。但是外部类要访问成员内部类的属性和方法,必须要先实例化成员内部类。
2.成员内部类里面不能包含静态的属性和方法。
3.访问非静态的(即没有用static修饰的),都必须有对象,比如我们的age属性,而我们的成员内部类作为一个非静态成员,它的实例化也必须依赖对象。所以是outclass.innerclass gamecard=student.new innerclass();
public class outclass {
public static String name;
public int age;
public class innerclass{
String IDCard;
String password;
public void print(){
System.out.println(name+":");
System.out.println(age+":");
}
}
public static void main(String[] args) {
outclass student=new outclass();
//成员内部类的实例化过程
outclass.innerclass gamecard=student.new innerclass();
}
}
匿名内部类
当一个内部类需要继承或实现,而且只用一次的时候,调用时直接用无参构造,并重写方法
接口
public interface Person {
void indentity();
}
测试类
public class test {
public static void main(String[] args) {
Person person=new Person() {
@Override
public void indentity() {
System.out.println("I am a student");
}
}
person.indentity();
}
}
静态内部类
注意:1.静态内部类就是在成员内部类多加了一个 static 关键字。
2.静态内部类只能访问外部类的静态成员变量和方法(包括私有静态)
3.静态内部类属于外部类本身的,所以实例化不需要外部类对象。类中的静态组件都不需要对象,直接通过类本身进行构造。比如我们常见的静态类方法:类名.方法() 。就可以调用这个方法了。
public class outclass {
public static String name;
public int age;
public static void test(){
System.out.println("调用静态内部类");
}
public static class innerclass{
String IDCard;
String password;
public void print(){
System.out.println(name+":");
test();
}
}
public static void main(String[] args) {
//静态内部类的实例化方法,和外部类一样
innerclass gameid=new innerclass();
}
}