内部类-----Java

内部类-----Java

内部类是一类特殊的类,指的是定义在一个类的内部的类,在Java中内部类主要分为非静态内部类、静态内部类、局部

内部类、匿名内部类。

 

非静态内部类,作为类的成员存在,和成员变量、构造方法、代码块并列。因为是类的成员,所以非静态成员内部类可以

使用public、protected、默认、private修饰,而外部类只能使用public、默认修饰。

public class OutClass {//成员变量private String name;private int num = 10;//构造方法public OutClass(){}public OutClass(String name,int num){this.name = name;this.num = num;}//成员方法public void methodOut(){System.out.println("methodOut");}public void methodOut2(){InnerClass ic = new InnerClass();System.out.println(ic.num);//20ic.methodInner();}class InnerClass{private String type;private int num = 20;//构造方法public InnerClass(){}public InnerClass(String type,int num){this.type = type;this.num = num;}//成员方法public void methodInner(){System.out.println(name);int num = 30;System.out.println(num);//30System.out.println(this.num);//20//内部类如何访问外部类的同名成员变量System.out.println(OutClass.this.num);//10methodOut();}}
}
public class Test {public static void main(String[] args) {OutClass oc = new OutClass();oc.methodOut();oc.methodOut2();//要创建非静态成员变量内部类对象,必须先创建外部类的对象//OutClass.InnerClass ic = new OutClass().new InnerClass();OutClass oc2 = new OutClass();OutClass.InnerClass ic = oc2.new InnerClass();}
}

运行结果如下:

总结:

1、内部类可以直接访问外部类成员

2、外部类不能直接访问内部类的成员,需要先创建对象再通过对象名来访问。

3、内部类如何访问外部类的同名成员变量:OuterClass.this.num

4、必须先创建外部类的对象,才能创建内部类的对象。非静态成员内部类是属于某个外部类对象的。

5、非静态内部类不能有静态方法、静态属性和静态代码块。

5、外部类的静态方法、静态代码块不能访问非静态内部类,包括不能使用非静态内部类定义的变量、创建的实例。

 

注意:

内部类只是编译时的概念,一旦我们编译成功,就会成为完全不同的两个类。对于一个名为Out的外部类和其内部定义的名为Inner

的内部类。编译完成后会出现Outer.class和Outer$Inner.class两个类的字节码文件。所以内部类是相对独立的一种存在,其成员变量、方法

名可以和外部类相同。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/562564.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

api数据加密的定义_API 设计基础规范

首先,请务必记住 API 设计和使用的一个重要法则 Postels Law(又称作稳健性原则):Be liberal in what you accept, be conservative in what you send下面是关于 API 设计的一些基本问题API First将 API 视作产品,并向产品开发一样设计和维护 API在代码实…

MySQL表级约束和列级约束

MySQL中只要支持六种完整性约束,如表所示:其中check约束是MySQL8中提供的支持。 约束条件 约束描述 primary key 主键约束,约束的值可唯一的标识对应的记录 not null 非空字段的值不能为空 unique 唯一约束,约束1字段的值是…

MySQL外键约束

MySQL外键约束 外键约束(FOREIGN KRY,缩写FK)是用来实现数据库表的参照完整性约束的。 外键约束可以是两张表紧密的结合起来,特别是针对修改或者删除的级联操作时, 会保证数据的完整性。 (注&#xff1…

zookeeper 密码_Dubbo、ZooKeeper介绍

dubbo是一个分布式架构的服务框架,一般结合maven的模块式开发使用。传统的单架构项目,不方便维护和升级;通过maven的模块式开发,就可以把一个单架构的工程,拆封成一个一个的小模块,包括(jar和war)&#xff…

异常--java

java默认的异常处理机制 优点:发生异常后、会给出异常类型、异常提示信息、异常出现的位置 缺点:出现异常后,后续语句不执行了;提示信息太专业,可读性差 解决:try-catch-finally 处理异常;th…

192.168.8.1手机登陆_高端机型都在鼓吹的ufs3.1是什么?对于手机使感受明显吗?...

最近很多朋友留言问,ufs3.1是什么,很重要吗?下面就由小编来给大家介绍一下手机上的ufs3.1是什么!ufs是高端安卓手机,常用的储存协议,就好像我们电脑里的固态硬盘一样,速度越快,打开软…

代码合并工具_11个代码质量审核和管理工具,程序员必备!

「 读者福利!2 TB 各类技术资源免费赠送 」如今,代码质量分析和审核已成为每个企业的基本流程。随着开源代码库使用的增加,安全性和代码质量对于构建高质量软件至关重要。不良的代码不仅会影响代码的可维护性,而且还会在某些情况下…

异常体系----java

一、异常体系 1、error error类层次描述了java运行时系统内部错误和资源耗尽错误,一般指与jvm或动态加载等相关的问题, 如:虚拟机错误,动态链接失败,系统崩溃等。 2、exception 所有异常类的父类,其子…

xy坐标正负方向_【笛卡尔坐标系】

【壹】笛卡尔坐标系(Cartesian coordinates)就是直角坐标系和斜坐标系的统称。相交于原点的两条数轴,构成了平面放射坐标系。如两条数轴上的度量单位相等,则称此放射坐标系为笛卡尔坐标系。两条数轴互相垂直的笛卡尔坐标系,称为笛卡尔直角坐标…

throw和throws的使用

throw和throws的使用 public class Person {private String name;private int age;public Person(){}Person(String name,int age){this.name name;this.age age;}public int getAge() {return age;}public String getName() {return name;}public void setName(String name…

为什么需要包装类?

1、某些方法的参数必须是对象,为了让基本数据类型的数据能作为参数,提供包装类。 2、包装类还可以提供更多的功能 3、其他特别重要的功能:比如可以实现字符串和基本数据类型之间的转换 认识一下包装类吧! package demo05;impor…

一句话概括自动装箱/拆箱

自动装箱过程是通过调用包装类的valueOf()方法实现的,二自动拆箱过程是通过调用包装类的xxxValue()方法实现的(xxx代表对应的基本数据类型,如intValue,doubleValue等)。 …

2021-05-24

String类的使用 package demo07;import java.util.Locale; import java.util.function.BiConsumer;public class TestString {public static void main(String[] args) {//1.创建一个String对象String str "abcDEfghijkL";//2.操作该String对象//2.1最简单的方法Sy…

StringBuffer和StringBuild

StringBuffer和StringBuild两个类的区别主要是: StringBuffer JDK1.0提供的类,线程安全,做线程同步检查,效率较低。 StringBuild JDK1.5提供的类,线程不安全,不做线程同步检查,因此效率较高。…

Date类练习

package demo09;import java.util.Date;public class TestDate {public static void main(String[] args) {//获取当前时间Date now new Date();//输出当前时间System.out.println(now.toString());System.out.println(now.toLocaleString());System.out.println(now.getYear(…

全连接层的作用_python构建计算图2——全连接层

(好久不更~)前文中,参照tensorflow的方式实现了简单的自动求导。接下来要在自动求导的基底(模板)上搭建简单的bp神经网络。计算图前文曾多次提到计算图,关于什么是计算图,有很多种说法。既然它被…

DateFormat类

DateFormat是一个抽象类,一般使用它的子类SimpleDateFormat类来实现。主要作用就是把时间队形转化成指定格式的字符串 反之,把指定格式的字符串转化成时间对象。 package demo10;import java.text.DateFormat; import java.text.ParseException; impor…

免费CDN:jsDeliver+Github使用方法

免费CDN:jsDeliverGithub使用方法 CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户…

教你如何使用github+jsDelivr搭建免费图床

前言 之前写了一篇文章,教你如何使用TyporaPicGo实现图片自动上传到图床 。 这里我用的是七牛图床,七牛图床有一定的免费使用量(没记错的话应该是10个G),如果你的存储量超过这个大小就需要付费使用了。除此之外&…

hexo-Fluid主题使用手册

hexo-Fluid主题使用手册 [官网] https://fluid-dev.github.io/hexo-fluid-docs/ 前言 Fluid 是一款很十分优雅的主题,那么写一篇优雅的文章搭配它呢?以下会从几个方面来简述,主要还是做几个推荐。 文章内容 熟悉 Markdown 语法 对于使…