Java面向对象之内部类

1、什么是内部类

写在一个类里面的类就是内部类。

2、什么时候用到内部类

B类表示的事物是A类的一部分,且B单独存在没有意义。

比如:汽车的发动机,ArrayList的迭代器,人的心脏等。

3、内部类的分类

成员内部类、静态内部类、局部内部类、匿名内部类。

4、成员内部类

写在成员位置的,属于外部类的成员。

获取成员内部类的方式

方法一:当成员内部类被private修饰时:

在外部类编写方法,对外提供内部类对象。

public class outer {

    private class inner{

    }

    public inner getInstance(){
        return new inner();
    }
}

方法二:在成员内部类被非私有修饰时,直接创建对象。

outer.inner oi=new outer().new inner();

相当于创建外类的对象,用外类的对象调用内部类。

4、外部类成员变量和内部类成员变量重名时,内部类如何访问

public class test {
    private int a=10;
    class inner{

        private int a=20;

        public void show(){

            int a =30;

            System.out.println(a);//30
            System.out.println(this.a);//20
            System.out.println(test.this.a);//10

        }
    }
}

5、静态内部类

静态内部类是一种特殊的成员内部类。

创建静态内部类对象的方法

Outer.inner oi=new Outer.inner();

如何调用静态内部类中的方法

非静态方法:先创建对象,用对象调用

静态方法:外部类名.内部类名.方法名();

静态内部类如何调用外部类的普通成员变量

同静态方法,需要在内部类创建外部类的对象,用对象的方式调用变量。

6、局部内部类

1、内部类定义子方法中就叫做局部内部类,类似于方法中的局部变量。

2、方法中局部内部类是无法直接调用的,需要在方法内部创建对象才能调用。

3、该类可以直接访问外部类的成员,也可以访问方法中的局部变量。

注意:局部变量不可以使用public 和private修饰,局部内部类和局部变量作用等同,也不可以被修饰。

7、匿名内部类

隐藏了名字的内部类,可以写在成员位置,也可以写在局部位置。

匿名内部类的格式

new 类名或者接口名(){
   重写方法;
}

格式的细节

包含了继承或实现,方法重写,创建对象。

整体就是一个类的子类对象,或者接口的实现类对象。

使用场景

当方法的参数是接口或者类时,

以接口为例,可以传递这个接口的实现类对象。

如果实现类只要使用一次,我们可以用匿名内部类优化代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值