- 浏览: 54298 次
- 性别:
- 来自: 湖北
文章分类
- 全部博客 (102)
- ibatis (4)
- spring (12)
- 数据库 (3)
- java (26)
- css (2)
- linux (1)
- hibernate (4)
- Maven (3)
- CMS (1)
- spring mvc (1)
- MyBati (1)
- WEB (1)
- 分布式 (2)
- webservice (2)
- 网络协议 (1)
- TCP (1)
- UDP协议 (1)
- sql优化原则 (1)
- android (1)
- hadoop (10)
- solr (2)
- Scala学习笔记--Actor和并发 (0)
- Spark (4)
- Scala (1)
- hbase (1)
- kafka (1)
- ICE (2)
- 机器学习算法 (2)
- Apache Ignite (1)
- python (1)
- tensorflow (2)
- openstack (1)
- 系统监控 (2)
- 大数据 (1)
- ogg (2)
- Oracle GoldenGate DDL 详细说明 使用手册(较早资料) (0)
- oracle (1)
最新评论
1)首先,用内部类是因为内部类与所在外部类有一定的关系,往往只有该外部类调用此内部类。所以没有必要专门用一个Java文件存放这个类。
2)静态都是用来修饰类的内部成员的。比如静态方法,静态成员变量,静态常量。它唯一的作用就是随着类的加载(而不是随着对象的产生)而产生,以致可以用类名+静态成员名直接获得。这样静态内部类就可以理解了,因为这个类没有必要单独存放一个文件,它一般来说只被所在外部类使用。并且它可以直接被用 外部类名+内部类名 获得。以下举例说明怎么使用:
Student类有个叫School的内部类(非静态)
Student stu = new Student();
stu.School sch = new stu.School();
sch就是School的一个对象。
假如School是内部静态类:
Student.School sch = new Student.School();
3)静态内部类也叫嵌套类,用这个名字给他定义是更加形象的。意思是说内部类和外部类的关系只是层次嵌套关系,所以只是在创建类文件的时候类文件名是如下形式:outer$inner.java,在使用方面完全和两个普通类一样。
和非静态内部类相比,区别就在于静态内部类没有了指向外部的引用。这实际上和C++中的嵌套类很相像了,Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用这一点上,当然从设计的角度以及以它一些细节来讲还有区别。
4)一般内部类在我看来才是真正的内部类,他们不仅有着嵌套关系,更重要的是内部类可以获得外部类的引用从而实现回调。而且通过创建内部类还可已让java实现真正的多继承!(interface名叫接口,顾名思义,他就是实现接口的,让一个类继承多个接口实现多继承是不合适的)
在非静态内部类中不可以声明静态成员,一般的非静态内部类,可以随意的访问外部类中的成员变量与成员方法。即使这些成员方法被修饰为private(私有的成员变量或者方法),其非静态内部类都可以随意的访问。则是非静态内部类的特权。不能够从静态内部类的对象中访问外部类的非静态成员(包括成员变量与成员方法)。
如果不需要内部类对象与其外围类对象之间有联系,那么可以将内部类声明为static.通常称为嵌套类。
当内部类是static时,意味着:
[1]要创建嵌套类的对象,并不需要其外围类的对象
[2]不能从嵌套类的对象中访问非静态的外围类对象
嵌套类与普通的内部类还有一个区别:
普通内部类的字段的字段与方法,只能放在类的外部层次上,所以普通的内部类不能有static数据和static字段,也不能包含嵌套类.但是在嵌套类里可以包含所有这些东西。
2)静态都是用来修饰类的内部成员的。比如静态方法,静态成员变量,静态常量。它唯一的作用就是随着类的加载(而不是随着对象的产生)而产生,以致可以用类名+静态成员名直接获得。这样静态内部类就可以理解了,因为这个类没有必要单独存放一个文件,它一般来说只被所在外部类使用。并且它可以直接被用 外部类名+内部类名 获得。以下举例说明怎么使用:
Student类有个叫School的内部类(非静态)
Student stu = new Student();
stu.School sch = new stu.School();
sch就是School的一个对象。
假如School是内部静态类:
Student.School sch = new Student.School();
3)静态内部类也叫嵌套类,用这个名字给他定义是更加形象的。意思是说内部类和外部类的关系只是层次嵌套关系,所以只是在创建类文件的时候类文件名是如下形式:outer$inner.java,在使用方面完全和两个普通类一样。
和非静态内部类相比,区别就在于静态内部类没有了指向外部的引用。这实际上和C++中的嵌套类很相像了,Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用这一点上,当然从设计的角度以及以它一些细节来讲还有区别。
4)一般内部类在我看来才是真正的内部类,他们不仅有着嵌套关系,更重要的是内部类可以获得外部类的引用从而实现回调。而且通过创建内部类还可已让java实现真正的多继承!(interface名叫接口,顾名思义,他就是实现接口的,让一个类继承多个接口实现多继承是不合适的)
在非静态内部类中不可以声明静态成员,一般的非静态内部类,可以随意的访问外部类中的成员变量与成员方法。即使这些成员方法被修饰为private(私有的成员变量或者方法),其非静态内部类都可以随意的访问。则是非静态内部类的特权。不能够从静态内部类的对象中访问外部类的非静态成员(包括成员变量与成员方法)。
如果不需要内部类对象与其外围类对象之间有联系,那么可以将内部类声明为static.通常称为嵌套类。
当内部类是static时,意味着:
[1]要创建嵌套类的对象,并不需要其外围类的对象
[2]不能从嵌套类的对象中访问非静态的外围类对象
嵌套类与普通的内部类还有一个区别:
普通内部类的字段的字段与方法,只能放在类的外部层次上,所以普通的内部类不能有static数据和static字段,也不能包含嵌套类.但是在嵌套类里可以包含所有这些东西。
发表评论
-
jvm
2018-03-26 09:47 396http://www.cnblogs.com/moonands ... -
多线程
2015-11-11 16:05 351public class ThreadDemo3 { ... -
java之装饰设计模式和继承的简单区别
2015-10-29 16:24 808http://jiangnanlove.iteye.com/b ... -
java注解
2015-10-26 11:18 393Java自定义注解小结 作者:谢伟伦 学习java有两年之余了 ... -
字符串补零除0
2015-10-21 11:55 701//去零操作 String str = "0050 ... -
代理模式与装饰模式差别,适配器模式
2015-10-07 19:29 726http://blog.csdn.net/hitprince/ ... -
jsoup解析html
2015-03-31 11:17 830jsoup:解析HTML用法小结 原文 http://my ... -
license生成
2015-03-02 10:44 542package com.dameng.dmdp.utils; ... -
java 堆和栈
2014-11-27 15:18 5191.栈(stack)与堆(heap)都是J ... -
java 23种设计模式
2014-11-19 14:56 598http://zz563143188.iteye.com/bl ... -
Java调用webservice接口方法
2014-11-19 14:36 5201. Java调用webservice接口方法 webserv ... -
java基本类型
2014-11-05 14:05 704基本类型比较 -
java修饰符权限
2014-11-05 13:58 601(1)public:可以被所有其他类所访问。 (2)priv ... -
类型转换
2014-11-05 13:44 495short s1 = 1; s1 = s1 + 1;有错,s1 ... -
Sring x = new String("xyz")
2014-11-05 13:32 513只要是new,都是重新分配堆空间,如果不区分栈和堆,这里创建了 ... -
java内部类和静态内部类调用
2014-06-23 14:06 549内部类 public class Test { clas ... -
匿名内部类
2014-06-18 15:00 442匿名内部类也就是没有 ... -
类的加载周期
2014-06-16 12:47 371类什么时候被加载/类加载时机: 第一:生成该类对象的时候,会 ... -
内部类
2014-05-05 14:43 497http://www.cnblogs.com/mengdd/a ... -
工厂模式
2014-03-24 15:17 526举两个例子以快速明白Java中的简单工厂模式: 女娲抟土造人 ...
相关推荐
- **非静态内部类不能包含静态成员**:成员内部类(非静态)不能拥有静态成员,因为它们依赖于外部类的实例。 #### 三、成员内部类详解 成员内部类是在外部类的成员位置定义的内部类,其语法结构如下: ```java ...
本文详细介绍了Java类的一些高级特性,包括抽象类、内部类的不同形式(成员内部类、局部内部类、匿名内部类、静态内部类)、Class类与Java反射的应用,以及注解的基本概念。通过学习这些内容,可以帮助开发者更好地...
`this` 也可以用来区分外部类的成员变量和内部类的局部变量,或者引用外部类的实例。 总的来说,`this` 关键字是 Java 中用于表示对象实例自身的一个关键字,它帮助我们访问成员变量、区分同名变量、在构造器间...
本文档“JAVA程序:接口小结”很可能是对Java接口的全面总结,包含了相关的代码示例,帮助学习者深入理解和运用接口。 接口在Java中的主要特性包括: 1. **接口是完全抽象的**:接口中的所有方法默认都是抽象的,...
6. 内部类:内部类分为成员内部类、局部内部类、匿名内部类和静态内部类。内部类可以直接访问外部类的私有成员,但静态内部类不能直接访问外部类的非静态成员。 7. 垃圾回收机制:Java的垃圾回收自动管理内存,避免...
`Math`类提供了丰富的静态方法,如`abs()`, `sqrt()`, `pow()`等,用于数学运算。生成随机数时,可以利用这些方法结合`Random`类或`Math.random()`方法。 #### 十三、Ant构建工具 Ant是一个基于XML的构建工具,...
6.3 小结:Java其实是个类和对象的世界 152 6.4 习题 153 第7章 Java中的方法——给汽车丰富多彩的功能 154 教学视频:2小时55分钟 7.1 方法:让汽车动开动 154 7.1.1 引出问题:开动汽车 154 7.1.2 那么,...
245 12.3.3 在外部类外访问静态内部类 246 12.4 匿名内部类 247 12.4.1 创建匿名内部类 247 12.4.2 匿名内部类的初始化 249 12.5 综合练习 250 12.6 小结 250 12.7 习题 250 第13章 多线程(精彩视频:55分钟) 252 ...
静态关键字用于声明类级别的变量和方法,它们属于类而不是类的实例。静态成员由类名直接调用,不需要创建对象。 9. ** final**: final关键字用于声明不可改变的变量、方法和类。一旦声明为final,就不能再改变其...
### Java笔试题小结 #### 1. Java 字符串(String) **问题**: String 类的特点是什么?与 StringBuffer 的区别? **分析与解答**: `String` 类在 Java 中是不可变的,即一旦创建了一个字符串对象,其内容就不能...
6.3 小结:Java其实是个类和对象的世界 152 6.4 习题 153 第7章 Java中的方法——给汽车丰富多彩的功能 154 教学视频:2小时55分钟 7.1 方法:让汽车动开动 154 7.1.1 引出问题:开动汽车 154 7.1.2 那么,...
学生提问:为什么静态内部类实例方法也不能访问外部类的实例属性呢? 207 学生提问:接口里是否能定义内部接口? 208 6.7.3 使用内部类 208 学生提问:既然内部类是外部类的成员,是否可以为外部类定义子类,在...
如果一个方法或类过于庞大,应考虑拆分为多个小方法或类,以增加复用性和可维护性。 3. **避免在生产环境中使用System.out.println()**:在调试期间,可以使用System.out.println(),但在部署时,应替换为日志框架...
- 不依赖于外部类实例的内部类被称为静态嵌套类。 - **在外部类中定义内部类** - 这种内部类可以访问外部类的成员,但反过来不行。 - **在方法中定义内部类** - 只在该方法内部有效。 - **匿名内部类** - ...
- 静态方法属于类,不依赖类的实例,可以直接通过类名调用。 - 非静态方法属于类的实例,必须先创建对象才能调用。 以上就是Java内存分配和管理的基本概述,了解这些知识点有助于优化代码性能,避免内存泄漏,...
Java 基础知识点小结 通过对代码块的讲解,我们可以了解到 Java 语言的基础知识点。代码块是 Java 语言中的一种基本结构单元,它可以用于限制变量的作用范围,或者用于执行某些特定的操作。代码块可以分为五种:...
8.1.3 静态内部类209 8.1.4 匿名内部类211 8.2 对象包装器213 8.3 装箱和拆箱216 8.4 本章习题218 第9章 9.1 String类220 9.1.1 字符串常量221 9.1.2 字符串对象操作224 9.1.3 字符串对象修改228 9.1.4 类型转换230 ...
5.7 本章小结 本章主要讲解了 Java 语言程序设计中接口和多态的概念、语法和应用。接口是一种抽象机制,提供了一种定义类之间的“协议”的方式,允许类之间实现多继承,同时免除 C++ 中的多继承那样的复杂性。多态...