继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

java的知识点简单归纳内部类

未知数X
关注TA
已关注
手记 14
粉丝 24
获赞 159

定义在一个类的内部或者是类中方法里-----------内部类,包含内部类的类-------外部类
分类为:成员内部类、静态内部类、方法内部类、匿名内部类。

成员内部类,也称普通内部类(最常见的)

eg:
//外部类

public    class  Person{           
public int age;//外部类要调用内部类信息 需要实例化(eg:new Heart.temp =12),无法直接访问
public   Heart getHeart(){

return new Heart();

}

public viod eat(){
  System.out.println("人会吃东西!");
}

//成员内部类
//内部类编译后.class文件命名:外部类$内部类.class
//内部类在外部类使用时,无法直接实例化操作的,需要外部类信息才能完成实例化
class Heart{  // 这里可以使用任何访问修饰符或默认不写的都可以但是访问权限的不同,内部类的调用会有不同的影响
int temp = 12;
 int age = 13; /如果这里也定义一个相同的属性 运行结果会以此值为准
public String beat(){
   eat();//可以直接去调同类型的外部属性方法
return age"岁的心脏再跳动";//内部类可以直接使用外部类的成员信息
//如果只想访问与内部类的同名的外部类的信息 这样写:Person.this.age.
    }
}

}
调用内部类的 在同包下 测试类

public class People{

public static void main(String args[ ]){

Person  lili = new Person();
lili.age = 12 ;
//获取内部对象实例 方式1:new 外部类 . new 内部类
  //因为是新产生的Person类 并且没有对其的age属性赋值(默认值0)
  // 所以 运行结果会是0岁的心脏再跳动
Person.Heart myheart = new Person.new Heart();

 System.out.println(myHeart.beat()); 

//获取内部对象实例 方式2:外部类对象 . new 内部类
    myheart = lili.new Heart();
    System.out.println(myHeart.beat()) 

  //获取内部对象实例 方式3:外部类对象.获取方法

    myHeart =  lili.getHeart();

    System.out.println(myHeart.beat()); 
}

 }

方法内部类

public class Person {
public static int age;

// 方法内部类
/*
* 1、定义在方法内部,作用范围也在方法内
* 2、和方法内部成员使用规则一样,class前面不可以添加public、private、protected、static
* 3、类中不能包含静态成员 
* 4、类中可以包含final、abstract修饰的成员
*/
public Object getHeart() {

    class Heart {
        public final int age = 13;
        int temp = 22;

        public final void say() {
            System.out.println("hello");
        }

        public void eat() {

        }

        public String beat() {
            new Person().eat();
            return Person.age + "岁的心脏在跳动";
        }
    }
    return new Heart().beat();//返回的都是内部类的方法
    // new Heart().temp=12;
    //// temp=33;
    // return new Heart();
}

public void eat() {
    System.out.println("人会吃东西");
}

匿名内部类

将类的定义与类的创建放在一起完成,以这种方式定义的没有名字的类的 就是匿名内部类

打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP