zoukankan      html  css  js  c++  java
  • java各种内部类

    成员内部类

    1.成员内部类位于一个类内部的成员位置,可以访问外部类中私有化的变量,方法等。

    2.成员内部类可以被私有化或者静态,静态内部类只能访问外部类中静态的成员。私有化封装的内部类只能通过外部类的成员访问。具体知识点用代码演示。

    复制代码
    package 面向对象;
    //成员内部类。
    class Person
    {
         int a=6;
        
         class Hand
        {
            int a=5;
            public void test_1()
            {
                int a=4;
                System.out.println(Person.this.a);//外部类变量用类名.this修饰。
                System.out.println(this.a);//内部类变量用this修饰。
                System.out.println(a);//内部类的方法内的变量不用修饰。
            }
        }
    }
    
    public class Test_5 
    {
        public static void main(String[] args)
        {
            Person.Hand c= new Person(). new Hand();//注意直接创建内部类对象的格式。
            //如果内部类为静态则创建方式为:Person.Hand c=new Person. Hand();
            c.test_1();
        }
    }
    复制代码

    局部内部类

    局部内部类一般位于外部类的成员方法中。局部内部类不能私有化和静态化。具体知识点如下:

    复制代码
    package 面向对象;
    //局部内部类。
     class Outer
    {
        private int a=5; 
        public void run()
        {
            class Inner//局部内部类不能用static,private修饰。
            {
                //final int c=30    //局部内部类使用局部变量必须加final。(jdk8以前)
                public void run_1(final int c)
                {
                    System.out.println(Outer.this.a);
                    System.out.println(c);    
                }
            }
            Inner i=new Inner();//局部内部类完成后需要创建对象。
            i.run_1(30);
        }
    }
    public class InnerTest 
    {
        public static void main(String[] args)
        {
            Outer o=new Outer();
            o.run();
        }
    }
    复制代码

    匿名内部类

    使用匿名内部类我们必须要继承一个父类或者实现一个接口,当然也仅能只继承一个父类或者实现一个接口。同时它也是没有class关键字,这是因为匿名内部类是直接使用new来生成一个对象的引用。

    具体知识点如下

    复制代码
    package 面向对象;
    interface Inter
    {
        public abstract void method();
    }
    class Test_6
    {
        public static Inter function()
        {
            return new Inter()//这里的内部类实现了inter接口,重写了method方法。
                {
                public void method()
                    {
                        System.out.println("haha");
                    }
                };
        }
    }
    public class InnerClassTest 
    {
        public static void main(String[] args)
        {
            Test_6.function().method();
        }
    }
  • 相关阅读:
    【407训练】第一周总结
    [Ural1306] Sequence Median(网上很多题解骗人,这才是对的!业界良心!)
    拓扑排序
    前端知识——Django
    前端知识——jQuery、前端插件、web框架、Django
    前端知识——DOM、jQuery
    前端知识——HTML、CSS
    python整理-day13
    python整理-day12
    python整理-day11
  • 原文地址:https://www.cnblogs.com/wangyage/p/7198798.html
Copyright © 2011-2022 走看看