一、内部类
内部类可以是静态(static)的,可以使用 public、protected 和 private 访问控制符,而外部类只能使用 public,或者默认。
1、成员内部类
(1)内部类可以直接访问外部类成员,包括私有成员(private);外部类调用内部类成员,需要实例化内部类对象再调用;
public class Outerclass {
int x;
private int y;
public void addOuter() {
Inner inner = new Inner();
inner.m++;
}
public class Inner {
int m;
public void addInner() {
x++;
y++;
}
}
}
(2)内部类可以对同一包其他类隐藏;
(3)静态内部类只能访问外部类静态数据(方法和变量);
二、匿名内部类
语句:new 接口名或者抽象类名
(1)定义位置-方法体内或者语句块内;
(2)必须继承一个抽象类或者实现一个接口;
abstract class Person{
public void eat();
}
class Cat extends Person{
public void eatSth(){
Person p=new Person(){
public void eat(){}
}
}
p.eat();
}
<pre name="code" class="html">
new Person{
public void eat(){}
}
}.eat();
}
二、泛型
1、泛型类-可以接受所有类型的数据
定义 class Point<T1 T2>{
T1 x;
T2 y;
}
实例化 Point<Integer,Integer> p=new <span style="font-family: Arial, Helvetica, sans-serif;">Point<Integer,Integer>;</span>
2、泛型方法
定义 public <T1,T2> void Name(T1 x,T2 y){} //<>内为泛型参数 ()为传值参数
修饰符与返回值类型直接定义在泛型中使用的泛型参数列表