1、概述

    1.1  内部类:一个类  定义在  其他类的内部,这个类被称为内部类;

        1.1.1  内部类可以   放在外部类的任何位置,方法中也可以(称为局部内部类);

        1.1.2  一般将内部类作为 成员内部类 使用

        1.1.3  内部类大致分类

              1.1.3.1、成员内部类

                      (定义在类中)

                    非静态内部类

                    静态内部类

public class CYInnerClass {

    /**
* 非静态成员内部类
*/
class A{ } /**
* 静态成员内部类
*/
static class B{ } public static void main(String[] args) { }
}

  

              1.1.3.2、局部内部类

                    a,  定义在方法中,仅在方法中有效;

                    b,  不能使用任何修饰符,也不能用static修饰;

package com.exiuge.mytest.innerclass;

public class JuBuInnerClass {

    private int age;

    public static void main(String[] args){

        class A{
int a;
} class B extends A{
int b;
} A a=new B();
a.a=10;
((B) a).b=11;
System.out.println(a.a+":"+((B) a).b);
}
}

              1.1.3.3、匿名内部类

                  a,  只使用一次;

                  b,  语法:

                        new 父类构造器(实参)  |  实现接口(){      }

                  c,  必须   继承一个父类(最多一个)  或  实现一个接口(最多一个);

                  d,  不能  定义构造器,但   可以有初始化块;

                  e,  不能   是抽象类;

public interface NMInnerClassInterface {
}

  

public class NMInnerClass {

    private String name;
private Integer age; public NMInnerClass(){ } public NMInnerClass(Integer age){
this.age=age;
} public void say(){ /**
* 匿名内部类调用父类构造器
*/
new NMInnerClass(23){ void test(){
System.out.println("hahaha...");
} }; /**
* 匿名内部类实现接口
*/
new NMInnerClassInterface(){
void test(){
System.out.println("hahaha...");
}
}; }
}

  

2、使用

      2.1、在外部类  以外   使用内部类  

            eg:

package com.an.innerclass;

/**
* @description:
* @author: anpeiyong
* @date: Created in 2019/12/26 9:01
* @since:
*/
public class CYInnerClass { /**
* 非静态成员内部类
*/
class A{ } /**
* 静态成员内部类
*/
static class B{ }
}

  

public class Test {

    public static void main(String[] args) {
CYInnerClass cyInnerClass=new CYInnerClass();
CYInnerClass.A a=cyInnerClass.new A();
}
}

  

          

        

JavaSE---内部类的更多相关文章

  1. Object类、包装类、内部类详解

    1.Object类 1.概念: 1.1 所有类在创建时都默认继承了java.lang.Object 1.2 所有类对象都可以声明为类对象的引用 Object ob1=new String(); Obj ...

  2. JavaSE学习笔记(5)---内部类和String类

    JavaSE学习笔记(5)---内部类和String类 一.内部类基础 转自菜鸟教程 ​ 在 Java 中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类.广泛意义上的内部类一般来 ...

  3. JavaSE 复习_4 接口多态和内部类

    △abstract不可以修饰成员变量 △一个类可以没有抽象方法,可以定义为抽象类,这样的目的是不能让其他类建立本类对象,交给子类完成. △abstract和static(可以被类名调用方法,但是抽象方 ...

  4. JavaSE学习总结(六)——接口、抽象类、内部类

    一.不需要实例化的原因 看一个示例: package com.zhangguo.chapter5.s1; /**动物园*/ public class Zoo { public static void ...

  5. JAVASE(十一) 高级类特性: abstract 、模板模式、interface、内部类、枚举、注解

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 1.关键字 abstract 1.1.abstract可以修饰:类,方法 1.2.abstract修饰方 ...

  6. JavaSE 学习笔记03丨继承、接口、多态、内部类

    Chapter. 5 继承 继承作为面向对象的三大特征之一,它是多态的前提.它主要解决的问题是共性抽取. Java中的继承,是单继承.多级继承的. 已存在的类,被称为超类.基类.父类(parent c ...

  7. JAVASE笔记回顾

    第一部分,JAVA基础和面向对象 part01 入门与开发环境搭建 1: 计算机基础知识(了解)(1)计算机(2)计算机硬件(3)计算机软件系统软件:windows,linux,mac应用软件:QQ, ...

  8. Java中的嵌套类和内部类

    以前看<Java编程思想>的时候,看到过嵌套类跟内部类的区别,不过后来就把它们的概念给忘了吧.昨天在看<数据结构与算法分析(Java语言版)>的时候,又遇到了这个概念,当时就很 ...

  9. JavaSE集合(十)之Map

    前面给大家介绍了集合家族中的Collection家族,这一篇给大家分享的是集合中的另一个家族就是Map家族.以前的时候学习Map的时候没有很认真的去学习,我觉得很多东西还是不是很清楚. 这次我将总结的 ...

  10. java 内部类 嵌套类

    .markdown-body { color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI" ...

随机推荐

  1. Android 菜单 之 上下文菜单ContextMenu

    所谓上下文菜单就是当我们长按某一个文件时弹出的菜单 操作这个菜单我们要重写onCreateContextMenu()方法 如上一篇文章一样,对于这个菜单中选型的操作也有动态添加和xml文件添加两种方法 ...

  2. apache隐藏入口文件index.php

    LoadModule rewrite_module modules/mod_rewrite.so

  3. jquery 仿文本编辑器(智能提示输入文字)

    1.前台代码 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="InputAu ...

  4. linux deb及rpm格式软件安装

    deb格式软件安装 deb包是debian,ubuntu等LINUX发行版的软件安装包,是类似于rpm的软件包,而非debian,ubuntu系统不推荐使用deb软件包,因为要解决软件包依赖问题,安装 ...

  5. 打印sql语句

    root->trace hibernate->trace ,然后,改配置 全文搜索:show_sql,将所有的show_sql改为true. 这样,就会显示sql语句了.

  6. WPF之MVVM模式(2)

    我们都想追求完美 Every view in the app has an empty codebehind file, except for the standard boilerplate cod ...

  7. DjVu转PDG的方法与步骤

    作者:马健邮箱:stronghorse_mj@hotmail.com发布:2008.08.03更新:2008.08.24 补充说明:此文成文较早,当时PDG浏览器只支持纯正PDG,不支持名为PDG,实 ...

  8. org.apache.commons.lang3包中的isEmpty和isBlank

    主要为了区分一下empty和blank的用法,先看源码: isEmpty public static boolean isEmpty(CharSequence cs) { return cs == n ...

  9. 在控制台使用MySQL数据库

    本篇内容介绍的是如何在控制台下使用MySQL数据库.首先需要安装MySQL数据库应用程序,然后找到MySql的Command Line Client进入之后你会看到,此处需要正确输入密码,否则会直接退 ...

  10. Ubuntu16.04跑loam_velodyne

    Ubuntu16.04,ros kinetic 其实按照github上的README.md来编译就好 cd ~/catkin_ws/src git clone https://github.com/l ...