• Java基础(basis)-----内部类详解


    内部类作用:

    •      实现了更好的封装,我们知道,普通类(非内部类)的访问修饰符不能为private或protected,而内部类可以。当我们将内部类声明为private时,只有外部类可以访问内部类,很好地隐藏了内部类
    •      内部类可以继承(extends)或实现(implements)其他的类或接口,而不受外部类的影响
    •      内部类可以直接访问外部类的字段和方法,即使是用private修饰的,相反的,外部类不能直接访问内部类的成员

    1. 静态内部类:作为类的静态成员,存在于某个类的内部

    •      静态内部类虽然是外部类的成员,但是在未创建外部类的对象的情况下,可以直接创建静态内部类的对象。
    •      静态内部类可以引用外部类的静态成员变量和静态方法,但不能引用外部类的普通成员

    2. 成员内部类:作为类的成员,存在于某个类的内部

    •     可以在其内部定义属性、方法、构造器
    •     是外部类的一个成员
    •     可以有修饰符
    •     可以调用外部类的属性、方法,但只有在创建了外部类的对象后,才能调用外部的成员

    3. 局部内部类:存在于某个方法的内部

    •    局部内部类只能在方法内部中使用,一旦方法执行完毕,局部内部类就会从内存中删除
    •    必须注意:如果局部内部类中要使用他所在方法中的局部变量,那么就需要将这个局部变量定义为final的
    package com.practice;
    
    /**
     * 内部类
     * 
     * @author yyx 2019年8月27日
     */
    public class InnerClassPractice {
        public static void main(String[] args) {
            // 创建静态内部类的对象:可以直接通过外部类调用静态内部类的构造器
            Animal.Dog dog = new Animal.Dog();
            dog.dogAge = 10;
            dog.showAge();
    
            // 创建非静态的内部类的对象:必须先创建外部类的对象,通过外部类的对象调用内部类的构造器
            Animal animal = new Animal();
            Animal.Cat cat = animal.new Cat();
            cat.catName = "Kitte";
            cat.catAge = 5;
            cat.showInfo();
        }
    }
    
    class Animal {
        String commonInfo = "都有四只脚";
    
        // 成员内部类(静态内部类)
        static class Dog {
            int dogAge;
    
            public void showAge() {
                System.out.println("狗的年龄为:" + dogAge);
            }
        }
    
        // 成员内部类
        class Cat {
            String catName;
            int catAge;
    
            public void showInfo() {
                System.out.println(Animal.this.commonInfo + "猫的年龄为:" + catAge + ",名字为:" + catName);
            }
        }
    }
  • 相关阅读:
    javascript 对象属性的添加,删除,json对象和字符串转换方法等
    利用jquery.form.js实现将form提交转为ajax方式提交的方法(带上传的表单提交)
    js封装的一行半显示省略号。(字数自由控制)
    jq和js中click 事件的几种方式总结和click事件的累加问题解决办法
    jquery $(document).ready() 与js原生的window.onload的区别总结
    jquery中attr和prop的区别
    织梦文档按权重排序
    织梦channelartlist标签内使用currentstyle
    dedecms无法下载远程jpeg图片 织梦不能提取文章内容中的jpeg图片生成缩略图
    织梦dedecms去除友情链接中的li和span
  • 原文地址:https://www.cnblogs.com/fengfuwanliu/p/11418515.html
Copyright © 2020-2023  润新知