• Java学习笔记之:Java 内部类


    一、介绍

     内部类:存在与类中的类就是内部类,一般用于Android开发。
     可以把内部类理解成一种继承关系
     1.普通内部类
     2.局部内部类
     3.静态内部类
     4.匿名内部类

    二、笔记

    1.普通内部类

    /**
     * 普通内部类:声明在类中,方法外的类 
     * 1.内部类可以直接访问外部类的属性和方法 包含私有的
     * 2.外部类不能直接访问内部类的属性和方法,可以通过对象来访问,包含私有的
     * 
     *
     */
    public class NormalInnerClass {
    
        public static void main(String[] args) {
            NormalInnerClass.Son fSon=new NormalInnerClass().new Son();
        }
        private String nameString;
    
        public void tell() {
    
        }
    
        //普通内部类 可以理解为是一个特殊的方法,可以创建对象
        class Son {
            private int  age;
            public void tell() {
                System.err.println(nameString);
            }
        }
    }

    2.局部内部类

    /**
     * 局部内部类:声明在方法中的类,他的作用域只能在声明这个类的方法中
     * 1.局部内部类,可以直接访问外部类的所有方法,包括私有
     * 2.他的作用域只能在声明这个类的方法中,其他的方法不能访问,其他的类也不能访问
     * 3.通过外部内部类来访问局部内部类
     * 4.普通内部类不能有静态方法和静态变量
     *
     */
    public class LocalInnerClass {
    
        private String nameString="admin";
        public void tell() {
    
            class son{
                public void tell() {
                    
                }
            }
        }
    }

    3.静态内部类

    /**
     * 静态内部类:
     * 1.内部类只能直接访问外部类的静态属性和方法。
     * 2.外部类只能通过类名直接访问内部类额静态属性和方法。成员属性和方法需要通过创建对象
     * 3.可以有静态方法 静态变量 实例变量 实例方法
     * 4.其他类可以通过类名直接调用静态属性和方法,通过创建对象访普通方法
     *
     */
    public class StaticInnerClass {
       private static String name;
        static class Son{
            private String tr;
            private static int age;
            public void tell()
            {
                System.out.println(name);
            }
            
        }
    }

    4.匿名内部类

    /**
     * 匿名内部类 通过调用
     * 
     *
     */
    public class AnonymityInnerClass {
        public static void main(String[] args) {
            Father father = new Father() {
                @Override
                public void menth() {
                    // TODO 自动生成的方法存根
                    super.menth();
                }
            };
        }
    }
    
    class Father {
    
        public Father() {
            // TODO 自动生成的构造函数存根
        }
    
        public void menth() {
            System.out.println("1");
        }
    }
  • 相关阅读:
    100天搞定机器学习|Day13-14 SVM的实现
    100天搞定机器学习|Day11 实现KNN
    100天搞定机器学习|Day9-12 支持向量机
    100天搞定机器学习|Day8 逻辑回归的数学原理
    100天搞定机器学习|Day7 K-NN
    100天搞定机器学习|Day4-6 逻辑回归
    宜信的105条数据库军规
    启动、配置、扩容、伸缩、存储,开普勒云平台之使用指南
    开普勒云平台:9个示例解析如何安装依赖
    钢铁B2B电商案例:供应链金融如何解决供应链金融痛点
  • 原文地址:https://www.cnblogs.com/huguodong/p/5930346.html
Copyright © 2020-2023  润新知