所谓内部类就是在一个类的内部再写一个类就叫内部类
Test3
package day09;
public class Test3 {
int i;
public int z;
private int k;
class A{
int i;
public void setTest3Fileds(){
Test3.this.i=1;
Test3.this.z=2;
Test3.this.k=3;
}
public void set(){
this.i=10;//此方法确定第9行的i
}
}
public void setInfo(){
//外部类要使用内部类要先new内部类的对象
new A().setTest3Fileds();
}
public void showInfo(){
System.out.println(this.i);
System.out.println(this.z);
System.out.println(this.k);
}
public static void main(String[] args) {
Test3 t=new Test3();
t.setInfo();
t.showInfo();
}
}
运行截图
如果内部类是static,就 不能使用外部类的非static成员
内部类可以声明为抽象类(abstract),可以被其他内部类继承
package day09;
public class Test3 {
int i;
public int z;
private int k;
static class B{
}
abstract class C{
}
class D extends C{
}
内部类是干什么用的?
答:内部类主要解决java不能多重继承的问题
package day09;
public class Test4 {
public static void main(String[] args) {
A a=new A();
a.testB();
a.testC();
}
}
/**
* 类A想要同时获得类B和类C的方法,并且重写
* 可以使用内部类来变相实现多重继承,可以同时继承多个类
*/
class A{
public void testB(){
new InnerB().testB();
}
public void testC(){
new InnerC().testC();
}
private class InnerB extends B{
@Override
public void testB() {
System.out.println("这是重写过后的testB方法");
}
}
private class InnerC extends C{
@Override
public void testC() {
System.out.println("这是重写过后的testC方法");
}
}
}
class B{
public void testB(){
}
}
class C{
public void testC(){
}
}