Java 之 内部类

(static修饰的成员属于整个类,而不属于单个对象)

定义:将一个类放到另一个类的内部定义,这个在内部定义的类就叫做内部类(也有的成嵌套类),包含内部类的类被称为外部类(也有的称宿主类)。

1。非静态内部类

没有使用static修饰的内部类就是非静态内部类。

注意:a。java不允许在非静态内部类中定义静态成员

b。当调用非静态内部类中的实例方法时,必须有一个非静态成员内部类实例,非静态内部类实例必须寄生在外部实例内

c。如果外部类成员变量与内部类成员变量与内部类里的方法的局部变量同名,可通过this,外部类类名.this 作为限定来加以区分

public class Test {private String prop = "外部类的实例变量";public class InClass{private String prop = "内部类中的实例变量";public void info(){String prop = "局部变量";System.out.println("外部类的实例变量值:"+Test.this.prop);System.out.println("内部类的实例变量值:" + this.prop);System.out.println("局部变量:" + prop);}}public void test(){InClass ic = new InClass();ic.info();}public static void main(String[] args){/** Test ts = new Test();* ts.test();* 上下的代码作用一样*/new Test().test();}
}

使用非静态内部类:

在外部类以外的地方定义内部类的语法格式: OuterClass.InnerClass  VarName

在外部类以外的地方创建非静态内部类实例的语法: OuterInstace .new  InnerConstructor()

class Out{class In{public In(String msg){System.out.println(msg);}}
}
public class CreateInnerInstance {public static void main(String[] args){//OuterClass.InnerClass varName = new OutInstance.new InnearConstructor();Out.In in = new Out().new In("测试信息");/*Out.In in;*Out out = new Out();*in2 = out.new In("测试信息");

     */
    } }

 

2.静态内部类

静态内部类是用static修饰的内部类,也称类内部类。

a。静态内部类不能访问外部类的实例成员,只能访问外部类的类成员(同为static 修饰)。

c。外部类依然不能访问静态内部类中的成员,但可以使用静态内部类的类名作为调用者来访问静态内部类中的类成员,也可以使用静态内部类对象作为调用者来访问静态内部类中的实例变量。

public class StaticInnerClassTest {private int prop = 5 ;private static int prop1 = 6 ;static class InClass{public void accessOuterProp(){

        private static int prop = 5;                                                                  
        private int prop1 = 6;
         //
System.out.println(prop);   //这句代码会出错,静态内部类无法访问外部类的非静态成员  

         System.out.println(prop1);}}
public void accessInnerPro(){
  //通过静态内部类的类名访问静态内部类中的类成员


  System.out.println(InClass.prop);
  //通过静态内部类对象作为调用者来访问静态内部类中的实例变量
  SYstem.out.println(new InClass().prop1);
}
}

在外部类以外使用使用静态内部类:(和使用非静态比较,相类似)
语法:   new OuterClass.InnerConstructor()

class Out{static class In{public In(){System.out.println("静态内部类的构造器");}}
}
public class CreateStaticInnerInstance {public static void main(String[] args){Out.In in = new Out.In();}
}

3.匿名内部类
如果把一个内部类放到方法中定义,则这个内部类就是一个局部内部类,局部内部类仅在该方法里有效。

定义匿名内部类的格式:

new 实现接口 | 父类构造器(实参列表)
{类体部分
}

可以看出,匿名内部类必须继承一个父类或者实现一个接口。

interface Product{public Double getPrice();public String getName();
}
public class AnonymTest {public void ce(Product p){System.out.println("购买了一个" + p.getName() + ",花掉了" + p.getPrice());}public static void main(String[] args){AnonymTest  at = new AnonymTest();at.ce(new Product() {@Overridepublic Double getPrice() {return 0.5;}@Overridepublic String getName() {return "辣条";}});}
}

 

转载于:https://www.cnblogs.com/mercuryli/p/4603311.html

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

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

相关文章

“数字化”才是智能制造的基础!

来源: 航空工业 摘要:所谓的机器换人只是低端工作,高端工作的智能绝大部分决策管理还是靠人来完成。机器换人仍只是自动化的老路!以下精彩内容为中国航空工业信息技术中心首席顾问宁振波在近日举办的“第九届航空航天信息化建设合…

数字图像处理学习之路:图像变换(一)

数字图像处理归纳总结1.1 数字图像处理基础1.2 数字图像处理技术1.3 图像处理一般流程1.4 图像变换案例分析(如真彩色图像转换为灰度图像)1.1 数字图像处理基础 概述:数字图像处理是基于画面进行二维或三维物体模型的重建,利用计…

Java-数据结构与算法-逢3减1

1.要求:有一群人围成一圈数数,逢3退1人,要求算出最后留下来的人的下标 2.代码: 1 package Test;2 3 public class Count3Quit1 {4 5 //要求:有一群人围成一圈数数,逢3退1人,要求算出最后留下…

2019年中国科创板全面解读报告

未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能,互联网和脑科学交叉研究机构。未来智能实验室的主要工作包括:建立AI智能系统智商评测体系,开展世界人工智能智商评测;开展互联网(城市)云…

雷达原理之 多普勒效应原理及应用(一)

多普勒效应:物体辐射的波长因为波源和观测者的相对运动而产生变化。 因为在运动的波源前面,波被压缩,波长变得较短,频率变得较高(蓝移);在运动的波源后面时,会产生相反的效应。波长…

数字图像处理总结(冈萨雷斯版)

数字图像处理前六章知识点总结第一章:绪论第二章:数字图像基础第三章:灰度变换与空间滤波第四章:频率域滤波第五章:图像恢复与重建第六章:彩色图像处理第一章:绪论 1.数字图像概念: …

iOS加入百度地图的几个问题

1、其中一个.m文件要改成.mm文件 2、plist文件必须包含两项 Bundle display name-值不能为空 NSLocationWhenInUseUsageDescription-值可以为空 3、必须把mapapi.bundle加入到工程,否则出现“引擎加载失败”错误 转载于:https://www.cnblogs.…

未来已来:5G将在这88个方面影响我们的工作和生活

来源:资本实验室作为备受瞩目的下一代移动通信网络,全球围绕5G的测试、布局与谈判不断升温。而与之相关的竞争也越发白热化,公司间的竞争、城市间的竞争、国家前的竞争,5G背负着太多的使命和期待。相比于4G通讯,5G不仅…

线性调频信号(LFM)的形式及幅度谱、相位谱特性

线性调频信号在SAR系统中非常重要,其瞬时频率是时间的线性函数。该信号常用于信号的发射,以获得均匀的信号带宽,在接收信号中则来自传感器运动。本篇博客主要讨论线性调频信号的形式,及在matlab仿真中的幅频特性和相频特性。 一、…

Android学习笔记----ArcGIS在线地图服务(Android API)坐标纠偏

仅限于如下ArcGIS在线地图服务(高德提供数据): //概述:彩色中文含兴趣点版中国基础地图 //投影:WGS 1984 Web-Mercator //切片格式:MIXED90 //服务类型:基础地图服务 //数据提供商:高德软件有限公司 //数据获取时间:2014年秋季 //…

机器人领域十大前沿技术

来源:工业互联网观察近些年来,机器人行业发展迅速,机器人被广泛应用于各个领域尤其是工业领域,不难看出其巨大潜力。与此同时,我们也必须认识到机器人行业的蓬勃发展,离不开先进的科研进步和技术支撑。以下…

星载低波段极化SAR电离层法拉第旋转效应(FR)及校正国内外研究现状-学习笔记

相较于常规星载SAR,星载低波段极化SAR一方面具有较强穿透能力,能够探测植被和千层地表下的隐藏目标,另一方面,该系统对生物量更为敏感,能够观测森林资源的消长,对研究全球碳循环与气候变化的相互作用具有重…

星巴克、苹果、谷歌、亚马逊等巨头,为何同时做这件事?

综合整理|《中国企业家》记者 周夫荣编辑|马吉英摘要:除了星巴克之外,苹果、谷歌、亚马逊等高科技公司也早已在可持续能源领域悄然布局。除了经济原因和社会责任,这些公司或许有更深远的考量。当外界把星巴克视为咖啡大…

合成孔径雷达成像算法与实现(信号处理基础知识点)

最近由于学业上需要,重新学习了《合成孔径雷达成像算法与实现》一书,其中第二章是信号处理基础,在此记录下学习过程。 一、信号处理基本概念 1.卷积与相关 卷积: 相关: 卷积从几何解释:(1).生成h(u)的时间对称…

Ionic发布成android

目前环境 1、ant的版本是1.9.4 2、jdk的版本是1.7 3、ionic安装版本是1.5.5 4、cordova版本是5.1.1 经测试,虽然ionic上面写的支持的最低版本是android-16,但是我发布的时候最低支持android-17,android-16每次都 编译失败,不知道是不是环境的…

【深度学习】一文看尽深度学习各领域最新突破

来源:《产业智能官》想要了解深度学习各领域的最新进展?看个视频就足矣。该课程的PPT资料,下载地址如下:https://www.dropbox.com/s/v3rq3895r05xick/deep_learning_state_of_the_art.pdf?dl0本文所介绍的内容是MIT系列课程之一&…

实数序列频谱的共轭对称性(DFT与IDFT仿真实现)

一、基础知识 1、傅里叶变换:通俗来讲,是以时间为自变量的信号与以频率为自变量的“频谱函数”之间的某种转换关系。 DFT:即离散傅里叶变换,对离散序列进行傅里叶变换。设x(n)为长度为M的有限长序列,其N点DFT定义(公…

IOS本地化应用

BK项目已完成7788,在项目的后期需要被翻译成多国语言版。为了适应全球多个国家使用多个存储。 应用本地化是分别对字符串、图片和 xib 或 storyboard 文件本地化,而传统的做法是对 xib 上的字符串(包含UILabel和UIButton、UITextField等&…

低轨通信卫星: 开启 6G 通信时代,带动千亿规模市场

来源:中国银河证券摘要:“6G5G卫星网络”,卫星通信应用前景广阔。2017年11月,英国电信集团(BT)首席网络架构师NeilMcRae对6G通信进行了展望,他认为6G将是“5G卫星网络”,在5G的基础上集成卫星网络来实现全球…

电离层色散效应误差补偿——基于最大对比度自聚焦算法(总结)

电离层色散效应严重影响星载SAR成像质量,为提升P波段星载SAR图像质量,必须研究相应的补偿技术,从而使得其更好的应用在军事和民用上。 目录一、引言二、最大对比度自聚焦算法原理三、最大对比度自聚焦算法流程图四、补偿方法性能分析一、引言…