方法内部类就是定义在外部类方法中的内部类,又称为方法内部类。
1.方法中定义的局部变量只能在方法中使用,同理方法内部类定义在方法内部,所以作用范围也只在方法内。
2.方法内不能定义静态成员,方法内部类中同样不能包含静态成员。
3.不能用public、private、protected修饰符进行成员的访问设定。
4.类中可以包含final、abstract修饰的成员。
对方法成员的约束,对方法内部类同样有效。
我们创建一个Person类,再创建一个getHeart方法,在其中创建一个命名为Heart的方法内部类
package people;
//外部类
public class Person {
public static int age;
public Object getHeart(){
//方法内部类
class Heart{
public int age=13;
int temp=22;
public void say(){
System.out.println("Hello");
}
public void eat(){
}
public String beat(){
new Person().eat();
//调用的是Person外部类中的age
return Person.age+"心脏再跳动!";
}
}
return new Heart().beat();
}
public void eat(){
System.out.println("人会吃东西");
}
}
方法内部类作为方法的成员,所有的动作只能通过这个方法进行,所以返回值应该调用其中的方法,将方法的返回结果带回去。如返回值为Heart内部类的beat方法。
创建一个测试类命名为PeopelTest
package people;
//将内部类实例化
public class PeopleTest {
public static void main(String[] args) {
Person lili=new Person();
lili.age=12;
System.out.println(lili.getHeart());
}
}
方法内部类的对象无法直接获取只有通过调用getHeart方法来产生Heart对象,所以我们还是要借助外部类的实例对象,通过实例对象的方法来获取方法内部类的实例对象。
运行结果
人会吃东西
12心脏再跳动!
在这里输出age的值为12,但是在方法内部类中给age赋值为13,之所以输出为12,是因为在Heart方法中的返回值的age为Person外部类的属性,若想返回方法内部类的值则修改为
return age+"心脏再跳动";