1.内部类
类可以相互定义,即在一个类的类体中可以嵌套定义另一个类。被嵌套的类被称为内部类,它的上级被称为外部类。
例子如下:
class Outer
{
private int index=100;
class Inner
{
private int index=50;
void print(){
int index=30;
System.out.println(index);
System.out.println(this.index);
System.out.println(Outer.this.index);
}
}
void print(){
Inner inner=new Inner();
inner.print();
}
Inner getInner(){//匿名内部类,可以利用其访问类中成员,它不用定义类名,可以直接用new创建对象
return new Inner();
}
}
public class Jpro3_8
{
public static void main(String args[]){
Outer outer = new Outer();//定义外部类对象
outer.print();
Outer.Inner inner = outer.getInner();//定义内部类对象
inner.print();
}
}
运行结果如下:
如果没有创建匿名内部类,那么创建内部类对象的方法将会改变,格式为
外部类.内部类 内部类对象=外部类对象.new 内部类;
2.泛型类
泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。
泛型类声明
一般格式为
class 类名 <泛型列表>
例子
import java.util.ArrayList;
import java.io.*;
import java.util.Scanner;
class Student{
private String account;
private String password;
public Student(String account , String password){
this.account = account;
this.password = password;
}
}
public class Jpro3_9{
public static void main(String[] args){
ArrayList<Student>as=new ArrayList<Student>();//Student是泛型类的参数,它可以引用任何类型,但不能是基本数据类型
Student s1=new Student("admin" , "20202");
Student s2=new Student("guest" , "696969");
as.add(s1);
as.add(s2);
System.out.println("student's number:"+as.size());
}
}