方法内部类
顾名思义,定义在某个方法内的类称为方法内部类。
方法内部类的知识点:
1.方法内部类的作用域仅仅在某个方法内
2.和方法内部成员使用规则一样,方法内部类class前面不能有public,static,protected,private修饰
3.类中不能包含静态成员
4.可以包含final,abstract修饰的成员
package cn.hpu.people;
//外部类
public class Person {
public static int age;
/*
* 方法内部类
* 1.定义在方法内的类,作用域在此方法内。
* 2.和方法内部成员使用规则一样,class前面不能有public,static,protected,private
* 3.类中不能包含静态成员
* 4.可以包含final,abstract修饰的成员
*/
public Object getHeart() {
class Heart{
public int age=22;
public void say() {
System.out.println("hello");
}
public String beat() {
new Person().eat();
return Person.age+"的心脏跳动";
}
}
return new Heart().beat();
}
public void eat() {
System.out.println("人会吃东西");
}
//成员内部类
/*
*
* 1.内部类在外部使用时,无法直接实例化,需要借助外部信息
* 2.内部类的访问修饰符何以任意,但是访问范围会受到影响。
* 3.内部类可以直接访问外部类成员,如果出现同名属性,优先访问内部类定义的。
* 4.可以使用外部类.this.成员名,来调用外部类中的同名属性。
* 5.外部类访问内部类信息,需要通过内部类实例,不能直接访问。
*/
//静态内部类
/*
* 1.静态内部类只能调用外部类的静态成员,非静态成员可以通过对象实例来调用
* 2.静态内部类的实例对象的创建不依赖于外部类对象
* 3.静态内部类的静态方法可以通过外部类.内部类.方法名来调用
* 外部类的静态成员通过类名调用,非静态成员通过外部类实例对象.来调用
*
*/
// public static class Heart{
// public static int age=22;
// public static void say() {
// System.out.println("hello");
// }
// public String beat() {
// new Person().eat();
// return Person.age+"的心脏跳动";
// }
// }
}