- 浏览: 228602 次
- 性别:
- 来自: 海南海口
文章分类
- 全部博客 (114)
- java基础 (25)
- 设计模式 (6)
- css (1)
- js (2)
- jquery (5)
- flash as3.0 (3)
- lucene (2)
- tomcat (3)
- uml (0)
- struts2 (7)
- spring (0)
- sql (1)
- ejb3.0 (2)
- jbpm4 (1)
- webservices (1)
- linux (3)
- ajax (1)
- 面试 (1)
- flex (0)
- soa (0)
- oracle解锁 (5)
- 工具 (3)
- ext (3)
- 好的网址 (1)
- junit (2)
- jmx (2)
- encache (1)
- redis (1)
- 网站 (1)
- oracle重要的sql (1)
- web (3)
- hadoop (2)
- DB2 (1)
- ui (1)
- sybase (1)
- ue使用快捷键 (1)
- eclipse优化 (1)
- 前端优化用到的插件 (1)
- zookeeper (1)
- solr (1)
- hibernate (1)
- svn (1)
- resion (1)
- resin (1)
- maven (1)
- mysql (1)
- url (1)
- 通过HttpFileServer设置共享 可以通过http方式访问 (1)
- 非技术 (2)
- 营销 (1)
- ELK (3)
最新评论
-
it_xiaowu:
jqwerty_123 写道我的出同样的问题却是因为引入cxf ...
java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Ma -
繁星水:
实验证明可用,最后补充一下,可以不需要 set Package ...
axis根据wsdl生成java客户端代码 -
qq_16699317:
qq_16699317 写道求一份源代码,感激不尽。。。多谢了 ...
java博客系统 -
qq_16699317:
求一份源代码,感激不尽。。。多谢了
java博客系统 -
jqwerty_123:
我的出同样的问题却是因为引入cxf的时候jcl-over-sl ...
java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Ma
嵌套类分为静态嵌套类和内部类(即非静态嵌套类)
1:内部类和外部类同时被编译,内部类编译后的class文件名为外部类$内部类名.class
2: 内部类分为成员内部类,方法内部类,匿名内部类,静态嵌套类,
public class OutClass{
private int a;
class InnerClass{
public void say(){
System.out.println(a);
}
}
public static void main(String[] args){
OutClass.InnerClass inner = new OutClass().new InnerClass();
inner.say();
}
}
以上这个就是成员内部类,在生成内部类的时候,其实内部类已经拥有外部类的一个引用了,所有内部类可以访问外部类的任何的变量和方法
内部类的this的引用,如果在成员内部类引用this的话就是指当前内部类实例如下:
如果内部类想引用外部类当前的对象呢:应该这杨写外部类名.this
public class OutClass{
private int a;
public class InnerClass{
public void say(){
System.out.println(a);
System.out.println(OutClass.this);
}
}
public static void main(String[] args){
OutClass.InnerClass inner = new OutClass().new InnerClass();
inner.say();
}
}
从以上这个内部类上来看可知,内部类的修饰符跟普通的类没有啥区别,可以用public ,private ,final,static 等,但是用static修饰的话,它内部不能都访问外部类的所有属性和方法了,因为
静态static没有this引用,它就仅仅能访问外部类的静态属性和方法了,
内部类也可以被别的类进行访问,最好的一种方法就是在当前的外部类生成一个产生内部类引用的方法类似这杨:
public class OutClass{
public InnerClass getInnerClass{
return new InnerClass();
}
private int a;
class InnerClass{
public void say(){
System.out.println(a);
}
}
}
当然内部类也可以继承别的类或者是实现别的 了!
如果一个继承一个内部类那么必须提供一个外部类的对象作为构造方法的参数例如:
class OutClass{
class InnerClass{
}
}
class A extends InnerClass{
public A(OutClass outClass){
outClass.super();
}
}
方法内部类:
故名思意:方法内部类就是定义在方法内部的类类似如下
public class OutClass{
public void ask(){
class InnerClass{
void good(){
System.out.println("good");
}
}
InnerClass inner = new InnerClass();
inner.good();
}
}
}
方法内部类里面如果要方法外部类的方法内的局部参数的话,局部参数必须是final类型的,因为
方法内的参数是存在的java栈当中的,也就是方法结束的时候他就消失了,而类是放在堆中的,这杨就不能
同时控制堆和栈中的变量同时消失,因此必须是final类行的!当然方法内部类只能在方法内部进行实例话不能在方法外面
进行实例化不然就报错了!
匿名内部类:
继承式的内部类:
class A{
public void say(){
System.out.println("hello");
}
}
public class B{
public static void main(String[] args){
A a = new A(){
public void say(){
System.out.println("hello----------");
}
};
a.say();
}
}
这样得出的结果是hello------------------因为a已经继承A类的一个子类的引用了,这杨的话就调用子类的say方法,记住了这里必须是重写父类的方法,而不是造新的方法
不然没有意义的!详解请看多态的相关知识点
接口式的匿名内部类:
public interface A{
void add();
}
public class B{
public static void main(String[] args){
A a = new A(){
public void add(){
System.out.println("add");
}
};
a.add();
}
}
这个时候a就是实现A接口的类的一个引用了!
参数式的匿名内部类:
class A{
public void say(B b){
}
}
public C{
public static void main(String[] args){
A a = new A();
a.say(new B(){
public void add(){
}
});
}
}
静态嵌套类:
public class A{
static class B{
}
}
这就是所谓的静态嵌套类,静态嵌套类里面的所有属性和方法都是静态的,因此外部类要访问内部类的静态方法和属性的话,必须是静态的,
因此静态嵌套类和少被使用!同时静态内部类访问外部类的属性和方法必须是静态的!
使用内部类的好处:
1:java是不支持多重继承的,因为可以每个内部类继承一个类,因为外部类是可以访问内部类的,因此这杨实现的效果多实现多继承是一样的!
2:内部类可以隐藏你不想让别人访问的方法和属性!
1:内部类和外部类同时被编译,内部类编译后的class文件名为外部类$内部类名.class
2: 内部类分为成员内部类,方法内部类,匿名内部类,静态嵌套类,
public class OutClass{
private int a;
class InnerClass{
public void say(){
System.out.println(a);
}
}
public static void main(String[] args){
OutClass.InnerClass inner = new OutClass().new InnerClass();
inner.say();
}
}
以上这个就是成员内部类,在生成内部类的时候,其实内部类已经拥有外部类的一个引用了,所有内部类可以访问外部类的任何的变量和方法
内部类的this的引用,如果在成员内部类引用this的话就是指当前内部类实例如下:
如果内部类想引用外部类当前的对象呢:应该这杨写外部类名.this
public class OutClass{
private int a;
public class InnerClass{
public void say(){
System.out.println(a);
System.out.println(OutClass.this);
}
}
public static void main(String[] args){
OutClass.InnerClass inner = new OutClass().new InnerClass();
inner.say();
}
}
从以上这个内部类上来看可知,内部类的修饰符跟普通的类没有啥区别,可以用public ,private ,final,static 等,但是用static修饰的话,它内部不能都访问外部类的所有属性和方法了,因为
静态static没有this引用,它就仅仅能访问外部类的静态属性和方法了,
内部类也可以被别的类进行访问,最好的一种方法就是在当前的外部类生成一个产生内部类引用的方法类似这杨:
public class OutClass{
public InnerClass getInnerClass{
return new InnerClass();
}
private int a;
class InnerClass{
public void say(){
System.out.println(a);
}
}
}
当然内部类也可以继承别的类或者是实现别的 了!
如果一个继承一个内部类那么必须提供一个外部类的对象作为构造方法的参数例如:
class OutClass{
class InnerClass{
}
}
class A extends InnerClass{
public A(OutClass outClass){
outClass.super();
}
}
方法内部类:
故名思意:方法内部类就是定义在方法内部的类类似如下
public class OutClass{
public void ask(){
class InnerClass{
void good(){
System.out.println("good");
}
}
InnerClass inner = new InnerClass();
inner.good();
}
}
}
方法内部类里面如果要方法外部类的方法内的局部参数的话,局部参数必须是final类型的,因为
方法内的参数是存在的java栈当中的,也就是方法结束的时候他就消失了,而类是放在堆中的,这杨就不能
同时控制堆和栈中的变量同时消失,因此必须是final类行的!当然方法内部类只能在方法内部进行实例话不能在方法外面
进行实例化不然就报错了!
匿名内部类:
继承式的内部类:
class A{
public void say(){
System.out.println("hello");
}
}
public class B{
public static void main(String[] args){
A a = new A(){
public void say(){
System.out.println("hello----------");
}
};
a.say();
}
}
这样得出的结果是hello------------------因为a已经继承A类的一个子类的引用了,这杨的话就调用子类的say方法,记住了这里必须是重写父类的方法,而不是造新的方法
不然没有意义的!详解请看多态的相关知识点
接口式的匿名内部类:
public interface A{
void add();
}
public class B{
public static void main(String[] args){
A a = new A(){
public void add(){
System.out.println("add");
}
};
a.add();
}
}
这个时候a就是实现A接口的类的一个引用了!
参数式的匿名内部类:
class A{
public void say(B b){
}
}
public C{
public static void main(String[] args){
A a = new A();
a.say(new B(){
public void add(){
}
});
}
}
静态嵌套类:
public class A{
static class B{
}
}
这就是所谓的静态嵌套类,静态嵌套类里面的所有属性和方法都是静态的,因此外部类要访问内部类的静态方法和属性的话,必须是静态的,
因此静态嵌套类和少被使用!同时静态内部类访问外部类的属性和方法必须是静态的!
使用内部类的好处:
1:java是不支持多重继承的,因为可以每个内部类继承一个类,因为外部类是可以访问内部类的,因此这杨实现的效果多实现多继承是一样的!
2:内部类可以隐藏你不想让别人访问的方法和属性!
发表评论
-
多线程超时处理的方法
2014-09-18 17:11 984package cn.mytest; import java ... -
java调用cmd不显示cmd窗口的
2014-07-11 09:34 1108cmd /c start /b fis release 加 ... -
hadoop的入门案例
2013-03-20 17:03 999http://www.cnblogs.com/xia520pi ... -
数据库字段内容的压缩算法
2013-03-08 14:34 1081package cn.ljz; import java. ... -
记录一下消息异步发送的一下框架
2013-02-03 19:02 949disruptor jgroups akka Activ ... -
eclipse中调试jvm内存溢出
2013-01-26 19:45 1324http://www.blogjava.net/rosen/a ... -
jvm退出之前清理工作
2013-01-24 23:25 863try { Runtime.getRu ... -
jvm内存泄露
2012-12-14 14:22 1084查看java内存泄露的办法 1:利用jdk自带的jps命令查看 ... -
Java获取当前运行方法的名称
2012-06-04 14:42 1534方法一:new Exception().getStackTra ... -
jdbc封装事务
2012-02-27 10:10 1151装载从这个网址过来的http://hi.baidu.com/g ... -
hashmap源码解析经典
2011-12-30 22:24 1025http://www.java3z.com/cwbwebhom ... -
hashmap的遍历
2011-12-30 22:04 1075for(Iterator ite = map.entrySet ... -
axis根据wsdl生成java客户端代码
2011-12-24 16:30 14378先下载axis jar包:axis-bin-1_4.zip。下 ... -
eclipse设置编译路径
2011-12-24 15:40 1096ljzblog/WebRoot/WEB-INF/classes ... -
java反射判断数组
2011-12-17 19:52 1107if (c.isArray()) { String ca ... -
java方法参数注解
2011-12-03 21:46 16064package cn.ljz.annotation; i ... -
java获取项目路径
2011-08-16 09:19 673this.getClass().getClassLoader( ... -
CardLayout 简单实现Demo
2010-11-10 00:11 2492package cn.ljz.test; import ... -
java反射机制小小总结
2010-08-18 10:40 12881:动态语言就是在程序运行的过程当中,可以改变程序的结果和变量 ... -
java线程小小总结
2010-08-18 09:52 1112线程:简单的来说就是 ...
相关推荐
### Java内部类总结 在Java编程语言中,内部类是一个重要的概念,它允许开发者在一个类的内部定义另一个类。这种特性极大地增强了代码的封装性和复用性,同时也为解决特定问题提供了灵活的方法。本文将围绕Java内部...
### JAVA内部类总结 在Java编程语言中,内部类(Inner Classes)是一种非常重要的特性,它允许我们在一个类的内部定义另一个类。这种结构不仅能够提高代码的组织性,还能帮助我们更好地处理类与类之间的关系。根据...
Java 内部类总结 Java 内部类是指在一个外部类的内部再定义一个类。内部类作为外部类的一个成员,并且依附于外部类而存在的。内部类可为静态,可用 protected 和 private 修饰(而外部类只能使用 public 和缺省的包...
Java 内部类总结 Java 内部类是 Java 语言的一个重要概念,指的是在一个外部类的内部再定义一个类。内部类作为外部类的一个成员,并且依附于外部类而存在的。内部类可为静态,可用 protected 和 private 修饰(而...
Java内部类总结 Java内部类是指在一个外部类的内部再定义一个类。内部类作为外部类的一个成员,并且依附于外部类而存在的。内部类可为静态,可用protected和private修饰(而外部类只能使用public和缺省的包访问权限...
总结一下,Java内部类是一种强大的工具,它增强了类的封装性和灵活性。通过内部类,开发者可以更好地组织代码,实现更复杂的逻辑,同时保持良好的代码结构。成员内部类提供了对外部类状态的访问,局部内部类提供局部...
Java内部类是Java语言的一个独特特性,它允许一个类被定义在另一个类的内部。这种设计使得代码结构更加紧凑,同时也提供了对封装和抽象的新层次。内部类在J2EE编程中可能用得较少,但在GUI编程中尤其常见,主要用于...
定义在一个类内部的类叫内部类,包含内部类的类称为外部类。内部类可以声明public、protected、private等访问限制,可以声明为abstract的供其他内部类或外部类继承与扩展,或者声明为static、final的,也可以实现...
Java内部类详解 Java内部类是Java语言中的一种特殊类别,它是指定义在另外一个类内部的类。内部类可以访问外部类的所有成员变量和方法,包括私有的变量和方法。内部类可以分为四种:成员内部类、静态嵌套类、方法...
Java 中的匿名内部类总结 Java 中的匿名内部类是一种特殊的内部类,它没有名字,因此也称为匿名类。匿名内部类是一种简洁的编程方式,能够简化代码编写,但它也有一些限制和特点。 匿名内部类的定义 匿名内部类是...
Java内部类是Java语言中一个独特且强大的特性,它允许我们在一个类的内部定义另一个类。内部类提供了增强封装的能力,使得内部类可以被隐藏在外部类中,仅对外部类可见,从而增加了代码的隐私性和安全性。同时,内部...
Java 中的内部类是面向对象编程的一个重要特性,它允许在一个类的定义内部定义另一个类。内部类的主要优点是能够方便地访问外部类的私有成员,提供了更封装的代码组织方式,以及创建特定上下文的类实例。下面将详细...
总结,Java内部类是一种强大的工具,能够帮助我们更好地组织代码、实现复杂的逻辑和接口。但使用时也需谨慎,避免过度依赖内部类导致代码难以理解和维护。在实际项目中,应根据具体需求选择合适的设计模式。
总结来说,Java 内部类提供了一种强大的工具,可以增强代码的封装性和灵活性。成员内部类方便访问外部类的私有成员,方法内部类常用于匿名内部类的创建,而静态内部类则允许我们不依赖外部类实例来创建对象。理解并...
Java中的内部类是一种强大的特性,它允许在一个类的定义内部定义另一个类。内部类可以作为外部类的一个成员,提供了一种灵活的代码组织方式,并且能够访问外部类的私有成员,这使得内部类在处理封装和继承时具有独特...