JavaSE---内部类
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---内部类的更多相关文章
- Object类、包装类、内部类详解
1.Object类 1.概念: 1.1 所有类在创建时都默认继承了java.lang.Object 1.2 所有类对象都可以声明为类对象的引用 Object ob1=new String(); Obj ...
- JavaSE学习笔记(5)---内部类和String类
JavaSE学习笔记(5)---内部类和String类 一.内部类基础 转自菜鸟教程 在 Java 中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类.广泛意义上的内部类一般来 ...
- JavaSE 复习_4 接口多态和内部类
△abstract不可以修饰成员变量 △一个类可以没有抽象方法,可以定义为抽象类,这样的目的是不能让其他类建立本类对象,交给子类完成. △abstract和static(可以被类名调用方法,但是抽象方 ...
- JavaSE学习总结(六)——接口、抽象类、内部类
一.不需要实例化的原因 看一个示例: package com.zhangguo.chapter5.s1; /**动物园*/ public class Zoo { public static void ...
- JAVASE(十一) 高级类特性: abstract 、模板模式、interface、内部类、枚举、注解
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 1.关键字 abstract 1.1.abstract可以修饰:类,方法 1.2.abstract修饰方 ...
- JavaSE 学习笔记03丨继承、接口、多态、内部类
Chapter. 5 继承 继承作为面向对象的三大特征之一,它是多态的前提.它主要解决的问题是共性抽取. Java中的继承,是单继承.多级继承的. 已存在的类,被称为超类.基类.父类(parent c ...
- JAVASE笔记回顾
第一部分,JAVA基础和面向对象 part01 入门与开发环境搭建 1: 计算机基础知识(了解)(1)计算机(2)计算机硬件(3)计算机软件系统软件:windows,linux,mac应用软件:QQ, ...
- Java中的嵌套类和内部类
以前看<Java编程思想>的时候,看到过嵌套类跟内部类的区别,不过后来就把它们的概念给忘了吧.昨天在看<数据结构与算法分析(Java语言版)>的时候,又遇到了这个概念,当时就很 ...
- JavaSE集合(十)之Map
前面给大家介绍了集合家族中的Collection家族,这一篇给大家分享的是集合中的另一个家族就是Map家族.以前的时候学习Map的时候没有很认真的去学习,我觉得很多东西还是不是很清楚. 这次我将总结的 ...
- java 内部类 嵌套类
.markdown-body { color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI" ...
随机推荐
- Android 菜单 之 上下文菜单ContextMenu
所谓上下文菜单就是当我们长按某一个文件时弹出的菜单 操作这个菜单我们要重写onCreateContextMenu()方法 如上一篇文章一样,对于这个菜单中选型的操作也有动态添加和xml文件添加两种方法 ...
- apache隐藏入口文件index.php
LoadModule rewrite_module modules/mod_rewrite.so
- jquery 仿文本编辑器(智能提示输入文字)
1.前台代码 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="InputAu ...
- linux deb及rpm格式软件安装
deb格式软件安装 deb包是debian,ubuntu等LINUX发行版的软件安装包,是类似于rpm的软件包,而非debian,ubuntu系统不推荐使用deb软件包,因为要解决软件包依赖问题,安装 ...
- 打印sql语句
root->trace hibernate->trace ,然后,改配置 全文搜索:show_sql,将所有的show_sql改为true. 这样,就会显示sql语句了.
- WPF之MVVM模式(2)
我们都想追求完美 Every view in the app has an empty codebehind file, except for the standard boilerplate cod ...
- DjVu转PDG的方法与步骤
作者:马健邮箱:stronghorse_mj@hotmail.com发布:2008.08.03更新:2008.08.24 补充说明:此文成文较早,当时PDG浏览器只支持纯正PDG,不支持名为PDG,实 ...
- org.apache.commons.lang3包中的isEmpty和isBlank
主要为了区分一下empty和blank的用法,先看源码: isEmpty public static boolean isEmpty(CharSequence cs) { return cs == n ...
- 在控制台使用MySQL数据库
本篇内容介绍的是如何在控制台下使用MySQL数据库.首先需要安装MySQL数据库应用程序,然后找到MySql的Command Line Client进入之后你会看到,此处需要正确输入密码,否则会直接退 ...
- Ubuntu16.04跑loam_velodyne
Ubuntu16.04,ros kinetic 其实按照github上的README.md来编译就好 cd ~/catkin_ws/src git clone https://github.com/l ...