我们在上一篇文章中了解了java中的接口,以及接口中定义的方法,接口的多继承等等。我们本篇文章来了解一下java的内部类,这个对我们后续学习多线程的线程的时候,会有很大的帮助。
比如A类中定义了一个B类,B类对于A类来说就称之为内部类,A对于B来说就是外部类。
1、我们新建一个软件包,Demo12,然后再里面新建一个Outer类,并且定义一些属性和方法。
package oop.Demo12;
public class Outer
{
private int id;
public void out()
{
System.out.println("这是外部类的方法!");
}
}
2、我们在这个类里面再写一个类Inner。
package oop.Demo12;
public class Outer
{
private int id=10;
public void out()
{
System.out.println("这是外部类的方法!");
}
public class Inner
{
public void in()
{
System.out.println("这是内部类的方法!");
}
}
}
3、 我们在main方法中,先实例化一个外部类(这里大家应该都会了new),然后我们用奇葩写法实现内部类的实例化。
package oop.Demo02;
import oop.Demo12.Outer;
public class Application {
public static void main(String[] args)
{
Outer outer = new Outer();
//通过这个外部类来实例化内部类
Outer.Inner inner =outer.new Inner();
inner.in();
}
}
这是内部类的方法!
4、获取外部类的私有属性。
package oop.Demo12;
public class Outer
{
private int id;
public void out()
{
System.out.println("这是外部类的方法!");
}
public class Inner
{
public void in()
{
System.out.println("这是内部类的方法!");
}
//获取外部类的私有属性,私有方法
public void getID()
{
System.out.println(id);
}
}
}
5、我们执行一main方法。
package oop.Demo02;
import oop.Demo12.Outer;
public class Application {
public static void main(String[] args)
{
Outer outer = new Outer();
Outer.Inner inner =outer.new Inner();
inner.getID();
}
}
10
package oop.Demo12;
public class Outer
{
private int id;
public void out()
{
System.out.println("这是外部类的方法!");
}
public static class Inner
{
public void in()
{
System.out.println("这是内部类的方法!");
}
public void getID()
{
System.out.println(id);//无法访问,编译器会报错
}
}
}
package oop.Demo12;
public class A
{
}
class B
{
}
class C
{
}
package oop.Demo12;
public class A
{
//局部内部类
public void method()
{
class Inner
{
public void in()
{
}
}
}
}
package oop.Demo12;
public class Test
{
public static void main(String[] args) {
new Apple().eat();//没有对象名字
}
}
class Apple
{
public void eat()
{
System.out.println("吃");
}
}
我们执行以下代码,输出一个结果。
吃
进程结束......