面向对象高级特性内部类
什么是内部类
1. 概念
在Java中,允许一个类的定义位于另一个类的内部,前者称为内部类,后者称为外部类。
Inner class一般用在定义它的类或语句块之内,在外部引用它时必须给出完整的名称。
Inner class的名字不能与包含它的类名相同;
Inner class可以使用外部类的私有数据 ,因为它是外部类的成员,同一个类的成员之间可相互访问。而外部类要访问内部类中的成员需要 : 内部类.成员或者内部类对象.成员。
分类:成员内部类(static成员内部类嵌套类和成员内部类)
局部内部类(不含修饰符)、匿名内部类成员内部类
1. 普通内部类class A { private int s; public class B { public void mb() { s = 100; // 在普通内部类的方法中, 可以直接外部类的私有成员. System.out.println("在内部类B中s=" + s); } } public void ma() { B i = new B(); i.mb(); } } public class Test { public static void main(String args[]){ A o = new A(); o.ma(); // 调用外部类的方法, 间接创建了内部类对象并调用了内部类对象的方法 } }public class A { private int s = 111; public class B { private int s = 222; public void mb(int s) { System.out.println(s); // 访问最近的形参值:333 System.out.println(this.s); // 访问本类当前对象的属性:222 System.out.println(A.this.s); // 访问外部类的当前对象的属性:111 } } } public class Test { public static void main(String args[]){ A a = new A(); A.B b = a.new B(); // 在测试类中创建普通内部类的对象需要使用外部类对象 b.mb(333); } }
2. 嵌套类
被static修饰的成员内部类就称为嵌套类.class A { private int s; public static class B { public void mb() { //s = 100; // 在嵌套类的方法中, 不可以直接外部类的非静态成员. //System.out.println("在内部类B中s=" + s); } } public void ma() { B i = new B(); i.mb(); } } public class Test { public static void main(String args[]){ A.B b = new A.B(); // 创建嵌套类对象, 不需要外部类的对象 } }局部内部类
1. 概念
在方法体中声明的内部类就是局部内部类, 局部内部类的范围和局部变量类似.
2. 普通局部内部类
在方法中声明的内部类, 有类名, 使用和普通类类似.public class Test { public static void main(String args[]){ class A { public void test(); }; A a = new A(); a.test(); } }
3. 匿名内部类
在方法中声明的内部类, 但是没有class关键字和具体类名, 称为匿名内部类, 因为没有类名, 所以必须在声明内部类的同时创建对象, 否则无法创建对象了.
所以匿名内部类的语法是 :
父类 引用 = new 父类(实参列表) {类体};
匿名内部类最常用用法是new 后面的类名是已经存在的类, 或抽象类, 或接口. 如果是抽象类或接口, 则匿名内部类类体中必须实现全部的抽象方法, 由此可见, 匿名内部类只能作为new后面的类或抽象或接口的子类存在, 但是没有类名, 所以通常在声明的时候就创建对象.public interface A { public void a(); } public class Test { public static void main(String args[]){ new A() { @Override public void a() { System.out.println("匿名内部类实现接口方法"); } }.a(); // 打印输出内容… } }
更多精彩内容:
面向对象高级特性接口
面向对象高级特性抽象类
面向对象高级特性代码块
面向对象高级特性final关键字
面向对象高级特性static关键字
小企业应该如何利用好大数据?有什么帮助?大数据渗透在我们的生活当中,越来越多的企业开始使用大数据,然而很多人都觉得,大数据似乎只有大企业能够用得上,但实际上并非如此。小企业也能够使用,并且对企业的帮助也是很大的。今天我们
加米谷大数据学习Flume介绍相信大家对Hadoopspark这些都不陌生,这些作为大数据的核心模块,接触的是最多的。而今天我们就来了解一下Flume。Flume是一个分布式可靠和高可用的海量日志采集聚合和传输
大数据学习Kafka的核心调优参数随着大数据开发的发展,越来越多的人想要转行或者学习大数据开发这一块,工资和发展前景都让大家越来越看好。而kafka作为一个核心模块,是学习过程的一个要点知识,今天我们就一起来看一下
大数据培训收费方式有哪些呢?三种方式要知道现在随着互联网的发展,大数据开发成为现在企业的需求部分了,因此很多人开始学习大数据,有的自学,有的是直接在大数据开发培训学校。同学们选择不同的成都大数据培训学校,费用方面是不同的,
深入解析大数据Hadoop中的HDFS大数据需要学习的框架有很多,而Hadoop作为大数据开发的核心模块,就需要多加了解。HDFS是基于Java的分布式文件系统,对于理解Hadoop分布式文件系统很有帮助,今天我们就一
大数据改变着生活中的哪些东西?如今,大数据无处不在,随着社会的发展,我们的生活中开始接触到大数据,它无处不在。但其实很多人对大数据都是只有一个大概的认识,对大数据的应用并不是很清楚,然而大数据的应用已经在悄悄改
学习大数据后,我们可以用在哪些地方?随着大数据的不断发展,它已经渗透在了我们生活中的各个地方,很多人对大数据只是有一个大概的了解。那么,大数据具体是什么?大数据会有哪些用途?今天我们就一起来看看。什么是大数据?大数据
什么样的人适合大数据开发?在进入正题时,我们先来了解一下什么是大数据?从专业角度来定义是一种规模大到在获取存储管理分析方面大大超出了传统数据库软件工具能力范围的数据集合。它主要用于互联网物联网等领域,相信学
Apple推出最专业的iPhone13Pro和iPhone13ProMax最后出场的iPhone13Pro和iPhone13ProMax,官方表示,iPhone13Pro和iPhone13ProMax是有史以来最专业的iPhone产品系列,它们引入了全新
大数据行业中的女性职员不知大家是否有曾想过这样一个词IT男为什么IT男会如此出圈,以至于一说到是做计算机的,第一反应就是IT男,而少有IT女呢?在早期的计算机行业发展过程中,高要求的专业技术能力,就会把
加米谷从四个方面来解读大数据的发展随着大数据的不断发展,越来越多的人开始重视大数据。大数据已不再是单纯数据特征的词汇,更多的理念需要大家去发现,才能更好的结合到生活工作和研发当中,今天我们就从四个方面来解读大数据的