java学习日记09——面向对象02

来源:互联网 发布:网络监控软件排行 编辑:程序博客网 时间:2024/06/07 18:59

在java中,允许在一个类的内部定义类,这样的类称为内部类,这个类所在的类称为外部类。根据内部类的位置,修饰符和定义的方式分为成员内部类、静态内部类、方法内部类。

成员内部类:

package classfoundation;class Outer {private int num = 4;public void test() {Inner inner = new Inner();inner.show();}class Inner {void show() {System.out.println("num = " + num);}//内部类可以被外部类中被使用,并能访问外部类的成员}}public class InnerClass {public static void main(String[] args) {// TODO Auto-generated method stubOuter outer = new Outer();outer.test();/*若想通过外部类去访问内部类,则需要通过外部类对象去创建内部类对象,创建内部类对象的具体语法格式外部类名.内部类名 变量名 = new 外部类名().new 内部类名();*/Outer.Inner inner = new Outer().new Inner();inner.show();}}

静态内部类:
package classfoundation;class Outer1 {private static int num = 6;// 使用static修饰,定义一个静态内部类static class Inner {void show() {System.out.print("num= " + num);}}}public class StaticInnerClass {public static void main(String[] args) {// TODO Auto-generated method stubOuter1.Inner inner = new Outer1.Inner();inner.show();}}
1:在静态内部类中只能访问外部类的静态成员。

2:在静态内部类中可以定义静态的成员,而在非静态的内部类中不允许定义静态的成员。


方法内部类:在成员方法中定义的类,只能在当前方法中被使用。

package classfoundation;class Outer2 {private int num = 412;public void test() {class Inner {void show() {System.out.print("num= " + num);}}Inner in = new Inner();in.show();}}public class MethodInnerClass {public static void main(String[] args) {// TODO Auto-generated method stubOuter2 outer = new Outer2();outer.test();}}


0 0