• 普通(成员)内部类


    普通(成员)内部类的格式:

      访问修饰符 class 外部类的类名{

        访问修饰符 class 内部类的类名{

          内部类的类体;

        }

      }

      普通内部类与我们使用的普通类没有区别,因为是内部类所有可以可以使用外部类中的私有方法。

    package com.lagou.task10;
    
    /**
     * 编程实现普通内部类的定义和使用      -   文档注释
     */
    public class NormalOuter {
        private int cnt = 1;
    
        //定义普通的内部类,隶属于外部类的成员,并且是对象层级
        public class NormalInter{
            private String ia = "cnt";
            public NormalInter(){
                System.out.println("普通内部类的构造方法体执行到了!");
            }
            public void show(){
                System.out.println("外部类中变量cnt的数值为:"+cnt);
                System.out.println("ia = " + ia);
            }
        }
    }

      内部类没有加static关键字修饰,内部类隶属于对象层级;对象层级必须先声明外部类的引用指向

    外部类的对象;

      (这里比较特殊)使用外部类的引用在new的前面使用,这里就可以成功创建内部类的对象了

    package com.lagou.task10;
    
    public class NormalOuterTest {
        public static void main(String[] args) {
    
            //1.声明NormalOuter类型的引用指向该类型的对象
            NormalOuter no = new NormalOuter();
            //2.声明NormalOuter类中的内部类的引用指向内部类的对象
            NormalOuter.NormalInter ni = no.new NormalInter();
            ni.show();
        }
    }

    普通内部类的使用方式

      普通内部类和普通类一样可以定义成员变量、成员方法以及构造方法等。

      普通内部类和普通类一样可以使用final或者abstract关键字修饰。

      普通内部类还可以使用private或者protected关键字进行修饰。

      普通内部类需要使用外部类对象来创建对象。

      如果内部类访问外部类中与本类内部同名的成员变量或方法时,需要使用this关键字。

    假设内部类成员变量与外部类成员变量同名,我们如何使用this关键字在内部类成员方法中分别得到该数值?

      1、在方法体内不加this关键字,得到局部变量

      2、在方法体内加this关键字,得到内部类成员变量

      3、如果想要得到外部内成员变量,必须使用外部类名.this的方式才能得到外部内成员变量。

    public class NormalOuter {
        private int cnt = 1;
    
        //定义普通的内部类,隶属于外部类的成员,并且是对象层级
        public class NormalInter{//内部类成员变量与外部类成员变量同名
            private int cnt = 2;
    public void show1(int cnt){ System.out.println("形参变量:" + cnt); } public void show2(int cnt){ System.out.println("形参变量:" + cnt); //局部优先原则 System.out.println("内部类:" + this.cnt); System.out.println("外部类:" + NormalOuter.this.cnt); } } }
  • 相关阅读:
    如何查看Linux进程详情?(ps命令)
    6款免费网络延迟测试工具
    Java中的JVM和Redis,你了解的透彻么?
    thinkPHP 5/thinkPHP 5.1 的apache重写文件
    redisclient客户端管理工具
    鼠标经过时切换图片
    点击页面元素页面向上滚动
    MongoDB客户端管理工具--MongoDB Compass
    JS继承
    JavaScript面向对象基础
  • 原文地址:https://www.cnblogs.com/xujiaqi/p/13633959.html
Copyright © 2020-2023  润新知