内部类
它是一个单独的类,可以随意直接访问外部类的所以变量(包括private),这是通过this的关系形成的,使得内部类的对象可以随意的访问外不类中的所有成员。在内部类中访问外部类的覆盖成员可以用classname.this. 。
内部类对象的产生,
不能直接用new,先要产生一外部类对象后在引用这个对象的成员(内部类)。即在访问时要有一个指向。说明是那个类的内部类对象。所以要先产生一外部类对象 outer.inner =out.new inner();
内存图--JAVA中凡是用new产生的对象都在堆内存中,它的引用保存在栈内存中。
对象的产生--用new , 用对象引用赋值。
方法内部的内的使用范围只能在方法体内部,
内部类可以放在函数中,条件中,语句块中。不管它嵌套多深,都可以随意访问外部类
内部的访问权限,和方法相同。private public default protected.还可以是final, abstract, static(不能在访问外部类的非静态方法和变量)
非静态的内部类中不能定义静态的变量和方法。
实例化内部类时先要实例化外部类。可以重写构造方法。利用outer.super()调用父类构造方法来建立内外类间的this关系。
example
class Car
{
class wheel
{
}
}
class planeWheel extends Car.wheel
{
planeWheel(Car car)
{
Car.super();
}
public static void main(String[] args)
{
Car car = new Car();
PlaneWheel pw =new Planewheel();
}
}
接口中的方法和变量都是public abstract的,实现方法时不能低于此访问权限
匿名的内部类,