- 浏览: 1588646 次
- 来自: 上海
文章分类
- 全部博客 (374)
- Java (101)
- Struts (54)
- Oracle (30)
- JavaScript (16)
- Spring (27)
- Hibernate (16)
- MyEclipse (3)
- JSF (1)
- FreeMarker (2)
- SiteMesh (2)
- JfreeChart (2)
- Ibatis (2)
- JSP (12)
- MyBatis (4)
- SWFupload (1)
- EJB (4)
- Jboss (4)
- WebService (2)
- Linux (16)
- Android (2)
- XML (6)
- Java 网络编程 (13)
- AXIS2 (1)
- FTP (1)
- Jswing (1)
- Socket (3)
- 杂文选集 (6)
- solr (2)
- PS (1)
- Tomcat (7)
- JDBC (9)
- Highcharts (1)
- maven (1)
- Nodejs (0)
- navicat (2)
- Exception (5)
- eclipse (3)
- jQuery (1)
- springMVC (4)
- MySQL (11)
- SVN (1)
- Sql Server (1)
- zookeeper (1)
- JVM (1)
- Groovy (2)
- Git (1)
- Nginx (1)
- DynamicReport (1)
- IDEA (2)
- JasperReports (1)
- Postgresql (2)
- Mac (1)
- gradle (1)
- 数据结构算法 (1)
最新评论
-
hpu145:
引用引用
java 千分位的添加和去除 -
被遗忘的下路:
少了个junit-4.8.2的包
SSH2整合完整案例(四十三) -
白天看黑夜:
java过滤emoji字符处理,希望能帮到你http://ww ...
emoji 表情图片解决方法 -
caipeiming:
这个挺好JavaScript实现input输入框控件只允许输入 ...
js 控制文本框只能输入中文、英文、数字等 -
双子树:
东西太好啦受教啊
Struts2 JSP中将list,set ,Map传递到Action然后<s:iterator>遍历(三十五)
内部类,静态内部类,全局内部类
局部内部类
匿名内部类
/** * 内部类的访问规则: * 1.内部类可以直接访问外部类中的成员,包括私有 * 之所以可以直接访问外部类中的成员,是因为内部类中持有一个外部类的引用, 格式为 外部类名.this.成员 * 2.外部类要访问内部类,必须建立对象 * *访问格式: *当内部类定义在外部类的成员位置上,而且非私有, 可以在外部其他类中可以直接建立内部类对象. *格式: * 外部类名.内部类名 变量名=外部类对象.内部类对象; * Outer.Inner in=new Outer().new Inner(); *2,当外部类在成员位置上,就可以被成员修饰符所修饰 * 比如: private : 将外部类中的内部类进行封装 * static : 内部类就具备static 特性 ,只能访问 外部类的static成员.出现访问局限 * (静态内部类: 一般是 应用的数据全是 静态的数据的时候就可以定了) * *3.其他外部类中怎么访问 静态内部类的非静态成员 * new Outer.Inner2().function(); * *4.其他外部类中怎么访问静态内部类中的静态成员. * Outer.Inner2.function1(); * * 注意 : 当内部类中定义了静态成员,该内部类必须是static的 * 当外部类中的静态方法访问内部类时候,该内部类也必须是static的 * */ class Outer{ private int x=3; private static int y=5; //外部类中 访问内部类中的成员 void method(){ Inner in=new Inner(); in.funtion(); } //放在一个内的内部 class Inner{ int x=4; //可以直接访问外部类中的成员 void funtion(){ int x=6; System.out.println("内部类:"+x); // 6 System.out.println("内部类:"+this.x); // 4 System.out.println("内部类:"+Outer.this.x); // 3 } /* 非静态内部类中不能有 静态成员 static int y=8; static void function1(){ System.out.println("内部类:"+x); }*/ } private class Inner1{ int x=4; void function(){ int x=6; System.out.println("内部类:"+x); // 6 System.out.println("内部类:"+this.x); // 4 System.out.println("内部类:"+Outer.this.x); // 3 } } static class Inner2{ //静态内部类的 非静态成员 void function(){ System.out.println("静态内部类:"+y); } //静态内部类的静态成员 static void function1(){ System.out.println("静态内部类:"+y); } } //外部类中的静态成员 public static void method1(){ //访问 该外部类中的静态内部类静态方法 Inner2.function1(); //new Inner1().function(); //报错 因为 Inner1 不是静态内部类 } } public class InnerClassDemo { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Outer out=new Outer(); out.method(); //如果直接访问内部类中的额function Outer.Inner in=new Outer().new Inner();// 外部类对象 .new 内部类对象 in.funtion(); //静态内部类中的非静态成员 Outer.Inner2 in2=new Outer.Inner2(); in2.function(); new Outer.Inner2().function(); //静态内部类 中的静态成员 Outer.Inner2.function1(); } } /** * 当描述事物时, 事物的内部还有事物,该事物用内部类来描述 * 因为内部事务在使用外部事务的内容. * 比如 身体 和 心脏 的关系 */ class Body{ private class XinZang{ //之所以私有 , 是不让任何人访问 int jump=270; //跳动的次数 int speed=80; //血流速度 void show(){ System.out.println("心跳:"+jump+";血流速度:"+speed+"脉"); } } public void seeXinZang(){ // 一个心脏病人 要看医生 //里面可以加入判断 是不医生? 身体是不是有病? 有:就给他们看 没有:就不给 等等 new XinZang().show(); } //比如还可以 是否 被女朋友踹了? 是: 就伤心 不是: 就开心 哈哈 }
局部内部类
/** * 内部类定义在局部时候 * 1.不可以被成员修饰符修饰 (private static 等) * 2.可以直接访问外部类中的成员,因为还持有外部类中的引用 * 但是不可以访问它所在的局部中的变量, 只能访问被final修饰的局部变量. */ class Outer{ int x=3; void method(final int k){ int x=4; final int y=5; class Inner{ //局部的内部类 void function(){ System.out.print(Outer.this.x); System.out.print(y); System.out.print(k); } } new Inner().function(); } } public class InnerClassDemo { public static void main(String[] args) { // TODO Auto-generated method stub Outer out=new Outer(); out.method(7); out.method(8); } }
匿名内部类
/** * 匿名内部类 * 1.其实就是一个内部类的简写格式 * 2.定义匿名内部类的前提 * 内部类必须是继承一个类或者实现接口 * 3.匿名内部类的格式 * new 父类或者接口(){定义子类的内容}.成员 * * 4.其实匿名内部类就是一个匿名子类对象.而且这个对象有点胖. * 5.匿名内部类中定义方法 最好不要超过3个. * */ abstract class AbsDemo{ abstract void show(); } class Outer{ int x=3; class Inner extends AbsDemo{ void show(){ System.out.println("show"+Outer.this.x); } } public void function(){ //不采用匿名内部类 new Inner().show(); } //采用 匿名内部类实现 public void function1(){ //这就是匿名内部类 new AbsDemo() { //如果只用一次 @Override void show() { //需要先实现 抽象类中的方法 System.out.println("show"+Outer.this.x); } }.show(); new AbsDemo() { //如果只用一次 @Override void show() { //需要先实现 抽象类中的方法 System.out.println("show"+Outer.this.x); } void method(){ //子类特有的 System.out.println("method:"+Outer.this.x); } }.method(); //发现 要进行多方法调用的时候 每次都要创建一个对象 } } public class AnonymousInner { public static void main(String[] args) { new Outer().function(); } } /*** * 题目 补足代码 采用匿名内部类完成 */ interface Inter{ void method(); } class Test{ //补足代码 采用匿名内部类完成 static Inter function(){ return new Inter(){ public void method(){ System.out.println("method show run"); } }; } } class AnonymousInnerTest{ public static void main(String[] args){ //根据这句话 在上面补足代码 Test.function().method(); //Test.function(): Test类中有一个静态方法 function //.method():function运算后返回的结果对象是 一个Inter对象,因为只有 Inter采用metho方法 } } /** * 面试题:如果没有接口 没有 父类 请写一个 匿名抽象类调用一个方法 */ class InnerTest{ public static void main(String [] args){ new Object(){ public void function(){ System.out.println("function run"); } }.function(); } }
发表评论
-
检测一个字符串是否在jvm的常量池中
2018-12-18 17:34 994public static boolean inPool( ... -
UTC时间, GMT时间 ,夏令时
2017-08-18 15:12 2280经常混淆于此,特地研究了一下,记录在此以备忘。 整个地 ... -
java 反射List
2017-02-18 01:58 5649package com.enhance.reflect; ... -
JDK1.5 Exchange 两个线程互换数据
2016-08-04 18:00 979import java.util.concurrent ... -
JDK1.5 CountDownLatch
2016-08-04 16:25 1054/* * 还有一个利用场景: ... -
java CyclicBarrier 循环障碍阻塞
2016-08-03 23:54 1005//一个同步辅助类,它允许一组线程互相等待,直到到达某个公 ... -
java 信号灯 Semaphore
2016-08-03 23:53 1822更多介绍http://blog.csdn.net/java20 ... -
java 使用读写锁设计一个缓存模型
2016-08-03 23:49 1415import java.util.HashMap; ... -
java 读写锁
2016-08-03 23:46 813import java.util.Random; i ... -
java 多个线程之间同步通信
2016-08-02 17:16 2395import java.util.concurrent ... -
jdk1.5 锁 Lock 和 Condition
2016-08-02 17:03 922// lock 练习 public class Lock ... -
JDK1.5 获取线程执行结果 Callable Future
2016-08-02 15:08 1170import java.util.Random; i ... -
JDK1.5 线程池
2016-08-02 14:48 799import java.util.concurrent ... -
java 多线程ThreadLocal
2016-08-02 00:13 1144import java.util.Random; ... -
java 定时器 Timer
2016-08-01 16:53 3889import java.util.Calendar; ... -
java 多线程同步+通信
2016-08-01 16:48 964/** *父子线程 交替打印10 次, 100次 ... -
java 线程同步
2016-08-01 16:43 1019import java.util.concurrent.l ... -
java多线程练习
2016-08-01 16:35 1837Java 传统多线程 Java 多线程同步 Java 多线 ... -
java 传统多线程
2016-08-01 16:34 1000/** * 传统多线程 */ public ... -
java 图片,剪切,缩放
2016-01-06 10:21 2228package out; import ja ...
相关推荐
接下来的几天会逐步深入,讲解类、对象、封装、继承和多态等面向对象编程的核心概念,这是Java语言的主体内容。 例如,Day 6和Day 7可能专注于类和对象的创建与使用,讲解如何定义类、构造函数、成员变量与方法,...
4. **第四天 笔记.doc**:可能会涉及Java的泛型、枚举类型、接口和抽象类的区别,以及Java的模块化系统(Java 9及以后版本的模块系统)。 5. **第五天 笔记.doc**:可能包含Java的输入输出和文件操作,网络编程(套...
12. **接口与内部类**:接口的定义和实现,内部类(成员内部类、局部内部类、匿名内部类)的用法。 13. **多线程**:线程的概念,创建线程的两种方式(继承Thread类和实现Runnable接口),线程同步和互斥,以及...
Java基础18天 Typora笔记概述 这是一份专为Java初学者准备的学习资源,由魔乐科技提供,旨在帮助用户在18天内建立起坚实的Java编程基础。Typora是一款简洁而高效的Markdown编辑器,使得笔记整理和阅读更加便捷。...
8. **面向对象进阶**:深入理解抽象类、接口、内部类、访问权限控制、构造器和重载、继承与多态的更复杂应用场景。 9. **异常处理**:学习如何使用try-catch-finally语句块进行异常捕获和处理。 10. **泛型**:...
5. 内部类与接口:学习匿名类、静态内部类和非静态内部类的使用,以及接口的定义和实现。 6. 异常处理:如何捕获和处理异常,以及自定义异常。 7. 集合框架:熟悉ArrayList、LinkedList、HashMap等集合类的使用,...
232 11.7 习题 232 第12章 内部类(精彩视频:71分钟) 234 12.1 非静态内部类 234 12.1.1 创建非静态内部类 234 12.1.2 在外部类中访问内部类 235 12.1.3 在外部类外访问内部类 236 12.1.4 在内部类中访问外部类 ...
14. **枚举与内部类**:了解枚举类型和内部类的特性,以及它们在实际开发中的应用场景。 15. **文件与对象序列化**:学习如何将对象序列化为二进制数据,以便存储或在网络间传输。 在项目的实战部分,讲义可能会...
10. **枚举与内部类**:了解枚举类型,它用于定义一组固定的值,以及内部类的概念,包括成员内部类、局部内部类和匿名内部类,它们在解决特定问题时非常有用。 11. **JavaFX和Swing**:接触Java的图形用户界面(GUI...
在“21天学Java”这个系列教程中,我们旨在为有一定编程基础的学习者提供一个系统而深入的Java学习路径。在21天的时间里,每天都会覆盖不同的主题,旨在逐步增强你的Java编程技能。让我们详细探讨一下这个过程中的...
9. **反射机制**:解释Java的反射机制,如何在运行时动态获取类的信息并进行操作。 10. **输入/输出流和网络编程**:学习网络编程的基础,如Socket编程,以及如何利用I/O流进行网络通信。 11. **Java Applet和...
"java学习16天"可能是指一个为期16天的Java编程学习计划,旨在帮助初学者快速掌握Java基础并深入理解其核心概念。在这个过程中,学习者通常会涉及以下几个关键知识点: 1. **Java基础知识**:首先,学习Java需要...
8. **反射**:Java反射机制允许在运行时动态地获取类的信息并调用其方法,是Java的高级特性之一,常用于框架和插件系统。 9. **JVM**:了解Java虚拟机(JVM)的工作原理,包括类加载机制、内存模型、垃圾回收等,...
一个".java"源文件中是否可以包括多个类(不是内部类)? 可以,但只有一个类可以是公共的(public),且该类名必须与文件名相同。 #### 8. 排序都有哪几种方法? 常见的排序方法有冒泡排序、选择排序、插入排序、...
《21天自学JAVA(源码)》是一个适合初学者的教程,旨在帮助读者在21天内掌握Java编程的基础知识。在这个压缩包中,包含了丰富的实例代码,以实践驱动学习,让学习者通过实际操作深入理解Java语言的核心概念。 Java...
Java支持四种类型的内部类:成员内部类、局部内部类、匿名内部类和静态内部类。成员内部类可以访问外部类的所有成员,包括私有成员;局部内部类只能在定义它的方法或作用域中使用;匿名内部类适用于创建只需要一次...
Java枚举类型是Java语言中一种特殊的类,用于定义固定的常量集合,它提供了一种安全、类型化的方式来表示一组有限的值。枚举在Java中被引入为一个完整的类型,不同于C++中的枚举,这使得Java枚举更加强大且易于使用...
10. **接口与内部类**:接口的定义和实现,抽象类与接口的区别,以及内部类(成员内部类、局部内部类、匿名内部类)的用法。 11. **多线程**:线程的基本概念,Thread类和Runnable接口,线程同步(synchronized...
1. 选择排序 2. 冒泡排序 3. 插入排序 4. 希尔排序 5. 堆排序 6. 归并排序 7.... 8.... 9. 计数排序 10. 桶排序 十种排序代码 我的博文地址:http://blog.csdn.net/u010156024/article/details/48932219