Java中的内部类,分为4种:
成员内部类;
静态内部类;
方法内部类;
匿名内部类。
本篇记录一下成员内部类的相关知识点。
1 成员内部类的定义和说明:
package com.oracleonlinux.innerclass; public class Person { public int age; private String name; public void eat(){ System.out.println("人会吃东西"); } public Heart getHeart(){ // 这里,参考内部类说明的第6条。 new Heart().temp=12; return new Heart(); } // 成员内部类 /** 1内部类在外部使用时,无法直接实例化,需要借由外部类信息才能完成实例化; * 2内部类的访问修饰符,public、private、protected、default都可以用。其意义遵循访问修饰符的访问权限; * 3内部类可以直接调用外部类的方法,如下,直接调用eat()方法; * 4内部类中的成员变量如果跟外部类相同,其有优先级,如下,age=12将优先; * 5可以使用外部类.this.同名成员属性的方式来,改变优先级。如:Person.this.age,则变为外部类的age优先内部类的age; * 6外部类访问内部类信息,需要内部类实例,无法直接访问。如:内部类定义的成员变量,temp,如果想在外部类的getHeart()方法中 * 去访问的话,则需要new Heart().temp这种形式; * 7内部类编译后文件名为:外部类$内部类.class的格式 * 8内部类如果有跟外部类同名的方法,那么在调用同名方法时。遵循的优先级跟第4点,同名成员变量保持一致。 */ class Heart{ int age=12; int temp; public void eat(){ System.out.println("内部类的eat()方法"); } public String beat(){ Person.this.eat(); return age+"岁的心脏在heartbeating"; } } }
2 测试类
com.oracleonlinux.innerclass; public class TestPerson { public static void main(String[] args) { Person person=new Person(); //获取成员内部类方式1:new 外部类名.new 内部类名 Person.Heart heart=new Person().new Heart(); System.out.println(heart.beat()); person.age=10; // 方式2,这里的person引用,等价于new Person(); Person.Heart heart1=person.new Heart(); System.out.println(heart1.beat()); // 方式3,通过外部类的获取方法,来获取内部类的对象.通常就是这么干的 System.out.println(person.getHeart().beat()); } }
3 执行结果
人会吃东西 12岁的心脏在heartbeating 人会吃东西 12岁的心脏在heartbeating 人会吃东西 12岁的心脏在heartbeating
顶一下
(0)
100%
踩一下
(0)
100%