美文网首页
java面向对象之内部类

java面向对象之内部类

作者: pretty_rain | 来源:发表于2019-08-14 10:18 被阅读0次

1.内部类的定义
把类定义在另一个类的内部,该类就被称为内部类。
2.内部类的访问规则
a:可以直接访问外部类的成员,包括私有
b:外部类要想访问内部类成员,必须创建对象
3.内部类的分类
a:成员内部类
b:局部内部类
4.成员内部类
a:成员内部类不是静态的:外部类名.内部类名 对象名 = new 外部类名().new 内部类();
b:成员内部类是静态的:外部类名.内部类名 对象名 = new 外部类名.内部类名();

输出结果:30,20,10,10
        
        class Outer {
            public int num = 10;
            
            class Inner {
                public int num = 20;
                
                public viod show() {
                    int num  = 30;
                    
                    System.out.println(num);
                    System.out.println(this.num);
                    System.out.println(Outer.this.num);
                                       System.out.println(new Outer().num);
                }
            }
        }

5.局部内部类访问局部变量必须加final修饰
因为局部变量使用完毕就消失,而堆内存的数据并不会立即消失。
所以,堆内存还是用该变量,而改变量已经没有了。
为了让该值还存在,就加final修饰。
通过反编译工具我们看到了,加入final后,堆内存直接存储的是值,而不是变量名。

class Outer {
    private int num  = 10;
    public void method() {
        final int num2 = 20;
        class Inner {
            public void show() {
                System.out.println(num);
                //从内部类中访问本地变量num2; 需要被声明为最终类型
                System.out.println(num2);//20
            }
        }
        //System.out.println(num2);
        Inner i = new Inner();
        i.show();
    }
}
class InnerClassDemo5 {
    public static void main(String[] args) {
        Outer o = new Outer();
        o.method();
    }
}

6.匿名内部类
a:是局部内部类的简化形式
b:前提:存在一个类或者接口
c:格式:
new 类名或者接口名() {
重写方法;
}
d:本质:其实是继承该类或者实现接口的子类匿名对象
7.匿名内部类在开发中的使用

interface Person {
            public abstract void study();
        }
        
        class PersonDemo {
            public void method(Person p) {
                p.study();
            }
        }
        
        class PersonTest {
            public static void main(String[] args) {
                PersonDemo pd = new PersonDemo();
                pd.method(new Person() {
                    public void study() {
                        System.out.println("好好学习,天天向上");
                    }
                });
            }
        }
        

相关文章

  • java面向对象之内部类

    1.内部类的定义把类定义在另一个类的内部,该类就被称为内部类。2.内部类的访问规则a:可以直接访问外部类的成员,包...

  • Java基础语法:面向对象概述

    Java面向对象学习的三条主线: 1. Java类及类的成员:属性,方法,构造器;代码块,内部类 2. 面向对象的...

  • 面向对象1

    java面向对象的3条主线 1.java类及类的成员、属性、方法、构造器、代码块、内部类2.面向对象三大特征:封装...

  • Java面向对象,权限修饰符,内部类

    day10笔记【Java面向对象,权限修饰符,内部类】 1_面向对象(package关键字的概述及作用)(了解) ...

  • java之内部类(InnerClass)详解

    参考文章 java之内部类(InnerClass)----非静态内部类、静态内部类、局部内部类、匿名内部类

  • java面向对象笔记

    面向对象三要素 抽象 接口 面向对象(局部内部类访问局部变量的问题) 匿名内部类

  • 面向对象总结

    面向对象思想 类与对象 定义类格式: 面向对象的三大特征 封装 继承 多态: 抽象类 接口 内部类 匿名内部类: ...

  • 面向对象编程学习的主线

    学习面向对象内容的三条主线 1. Java 类及类的成员:属性、方法、构造器;代码块、内部类 2. 面向对象的三大...

  • Java基础之面向对象

    Java类及类的成员(属性、方法、构造器、代码块、内部类) 面向对象(OOP Object Oriented Pr...

  • 内部类

      内部类(nested classes),面向对象程序设计中,可以在一个类的内部定义另一个类。内部类是JAVA语...

网友评论

      本文标题:java面向对象之内部类

      本文链接:https://www.haomeiwen.com/subject/khgbjctx.html