- 浏览: 142480 次
- 性别:
- 来自: 南宁
文章分类
- 全部博客 (137)
- J2SE API基础 (19)
- JAVA Structure/Algorithm (1)
- 设计模式及UML(pd/rose) (11)
- SSH (32)
- JPA/EJB/JSF (0)
- Jsp/Servlet (1)
- XML (0)
- DWR/Dojo/JQuery(Ajax) (1)
- Js/css/HTML (3)
- Java报表开发 (0)
- 网络协议及认证加密算法 (2)
- Java多线程网络编程 (1)
- Lucence (0)
- Oracle Developer (5)
- Oracle DBA (3)
- mysql/SQLServer/DB2 (5)
- Weblogic配置/调试 (0)
- Tomcat/JBoss/Websphere (10)
- Linux/Unix操作部署及shell编程 (9)
- C/C++编程 (4)
- 系统分析 (0)
- 项目管理(CVS&风险控制) (0)
- JUnit单元和J2EE集成测试 (2)
- 软设/招聘 (6)
- IT English (8)
- Mathematics/Data Mining (1)
- Android开发爱好 (1)
- Flash制作爱好 (0)
- Professional wisdom (4)
- 序言 (1)
- 聊天记录 (0)
- 理想 (3)
- 承诺 (0)
- oifuslfjsldkj_chatrecord (1)
最新评论
-
blues1021:
dafeiwudi 写道什么叫外频和陪频啊?一般电脑都显示主频 ...
计算机组成原理和结构-时钟周期、机器周期、总线周期、指令周期含义和关系 -
dafeiwudi:
什么叫外频和陪频啊?一般电脑都显示主频,它不表示运算速递,我们 ...
计算机组成原理和结构-时钟周期、机器周期、总线周期、指令周期含义和关系
内部类的作用总括:
1.内部类可以独立的继承一个类和多个接口,提供了多继承的支持(若用接口为不同形式的继承);当然对于匿名内部类没有这样的能力,但是它在重载父类方法方面特别突出。
2.为外部类提供了一个可隐藏的强大的数据结构体。
记忆:1.在内部成员和静态成员相同和区别:
(1)各修饰都一样,包括控制限定和非控制限定。
(2)在外部类的方法中声明对象调用都是一样的。
区别:在外部类外成员内部类声明对象为: Outter.innner obj=new Outter.new inner();//因为为对象拥有
在外部类外静态成员的类声明对象为:Outter.inner obj=Outter.new innner();//不为对象拥有。
2.局部内部类中,本身方法里面的局部变量不可以访问,因为Inner对象的生命周期和外部类的周期一样,而方法内的变量的周期是暂时的,而声明为static即可使用。
3.匿名内部类和局部内部类一样都没有访问控制限制符,且比局部没有任何的非访问控制限定符。
在声明对象是重载方法,然后用当前对象.重载方法即可。
一、成员内部类 :
1.作用:相当于类的成员,作为外部类对象的一部分,为对象提供强大的功能支持。
2.定义: 访问控制修饰:private protected public
非访问控制修饰:final abstract。
示例:
public class memberClass{
int j,k;
// static int s=100;不能在成员内部类中定义static成员。所以没有对内部类静态成员访问问题。
...
}
3.成员的定义:全部类型的成员,可以有全部的控制修饰符,非控制修饰符就是static不能用。
4.访问:首先声明,
类内部非静态和静态itself和之间相互访问的规则:只有静态方法访问非静态成员时要声明对象调用,其它itself和非静态调用静态都可以之间访问。
类外部的访问规则:在可访问的条件下,调用类的非静态成员时要声明对象,调用类的静态成员是用类限定符。
(1)外部类内部访问内部类成员,直接声明对象调用即可。
(2)外部类外访问内部类成员,1、可以封装到一个外部类的方法中然后调用.
2.直接调用:
法一:testMemberClass mb=new testMemberClass()
testMemberClass.memberClass mb2=mb.new memberClass();
法二:testMemberClass.memberClass mb2=new testMemberClass().new memberClass();
得到对象后直接调用内部类的成员。其实法一、二都是一样的,先声明外部类的对象.声明内部类对象。
二、静态内部类 :
1.作用:并不相当于外部类的静态成员,只是声明为独立于外部类对象的普通类,作用不大。
2.定义:访问控制符:控制访问:private protected public
非控制访问:abstract static final
也就是所有的类访问控制符都可以,当然static一定要有。
示例:
public static class StaticInner{//
可以在里面声明static 成员,无论在哪里调用都用对象.f()调用,
public static int f(){//
有些特别,出现了静态成员也不是静态成员了(本人测试过)。
...}
}
3.成员的定义:全部类型的成员,可以有全部的控制修饰符,非控制修饰符包括static都能用。
4.访问:
(1)外部类内部访问内部类成员,直接声明对象调用,和成员内部类一样(因为它不是静态的)。
(2)外部类外访问内部类成员,1、可以封装到一个外部类的方法中然后调用.(非静态的)
示例:
TestStaticClass ts=new TestStaticClass();
ts.outf();
2.直接调用: (静态的)
示例:TestStaticClass.StaticInner inner=new TestStaticClass.StaticInner();
inner.f();
在与成员内部类比较看出,构造方法部分少了一个new,其余都一样;这里要说明的是new是用来限制内部类的,所以用外部类名.静态的内部类对象。此时解释内部类又为静态的了,所以说静态内部类并不相当于静态的。
三、局部内部类 :
1.作用:相当于方法内的成员变量,可以为方法提供强大的数据结构且隐藏类,不是很常用。
2.定义:修饰符:没有控制修饰符,因为不是类的成员;非控制访问修饰符:final、 abstract.
示例:public void getInner{
int x=100;
class methodClass{
//x=x+1;不能访问方法变量。
}
}
3. 成员的定义:全部类型的成员,可以有全部的控制修饰符,非控制修饰符就是static不能用(和成员内部类一样)。可以访问外部类的成员,可以访问方法的 常量变量(不过方法的变量要声明为final,因为对象的生存期在运行方法后还存在,所以一般变量调用会引用不到,而final可以引用到)。
4.访问:
特别地:只能在方法中访问,因为其作用域为方法内部,所以只能在作用域内访问到。
示例:
public void getInner(){
class Inner{
public void show(){}
}
Inner i=new Inner();
i.showl();
}
外部只能用 调用封装了它的外部类的方法中调用.
如:object1.getInner();
四、 匿名内部类:
1.作用:简化了声明一个类,直接覆盖父类的方法,然后调用。在事件处理中常使用。
2.定义:没有修饰符,包括控制访问和非控制访问的都没有。没有类名称,声明父类对象时创建自己的对象,且重载父类的方法。
示例:public class Outter{pblic void show(){};};
class Test{
public static void main(String [] args){
Outter out=new Outter(){
public void show(){//重载show方法
}};
out.show();//和局部内部类一样,在方法中调用,但是在它的方法中创建对象只能创建父类对象时。
}
}
3.方法的修饰符,直接重载父类的方法,所以修饰符也一样。
4.访问:(1)在方法中访问,如上。
(2)f.addMouseMotionListener(new MouseMotionAdapter() {// 匿名类开始
public void mouseDragged(MouseEvent e) {
String s = "Mouse dragging:X=" + e.getX() + ",Y="
+ e.getY();
tf.setText(s);
}
});
发表评论
-
java字符串按字符逆转和按单词逆转
2011-11-26 16:21 1586字符串的处理,经常在各类考试中用到,在网上搜索了下这方面的资料 ... -
JScrollPane和JTextArea,JMenuBar、JMenu和JMenuItem之间的组合关系
2011-08-09 18:19 1093package menuta; import java.aw ... -
利用EasyGridLayout API的帮助文档
2011-08-09 18:17 702一、对上一篇文章给出的EasyGridLayout源程序,加载 ... -
封装GridBagLayout的EasyGridLayout组件布局类和GridBagConstraints类字段解析
2011-08-09 18:15 1717一、实用源程序,可以用于自己的类库中调用相应的setConst ... -
Java2 五种界面布局类和实际中的使用
2011-08-09 18:14 1136(JPanel)Panel是一个轻量级的容器,由于不是顶层的容 ... -
Java2中的框架类和容器类、容器类与布局类的聚合关系
2011-08-09 18:12 924一: 布局中的JFrame与JPanel、Container ... -
Java2事件处理模型的解析和注意
2011-08-09 18:11 779/*<pre>伪源代码*/ DemoFlowLa ... -
Java2 I/O类使用总结(图解)
2011-08-09 17:58 624一、对象的读写(序列化):ObjectIO.jpg ... -
规范注释的说明形式和位置、@param参数、<pre>源代码示例
2011-08-09 17:52 1279/** * Returns a string that ... -
javaI/O中FileOut/InputStream借助ObjectOut/IntputStream写入和读取序列化之嵌套原理
2011-08-09 17:51 1087一、FileOutputStream和ObjectOutpu ... -
用==和equals测试java对象的引用、浅拷贝、深拷贝和初始化区别
2011-08-09 17:44 1137测试主要部分代码:public class Employee ... -
从低到高强制转换取模截断位数导出的java基本类型复习
2011-08-09 17:39 1041一、强制类型转换中的低到高强制转换取模截断位数本质 ... -
java项目结构组织及类、成员的访问限定符
2011-04-08 20:05 1084main:一个项目中可有多个main方法但是,要选 ... -
类内、类外静态非静态方法的调用
2011-04-08 20:11 1101一:类内部 1.调用静态性相同的直接用。 2 ... -
hashcode方法
2011-04-08 20:17 623hashcode()是干什么用的? 首先hashcode是哈 ... -
JAVA中的接口与抽象类的区别记忆
2011-04-08 20:31 706接口与抽象类:抓住 ... -
java.util.StringTokenizer
2011-04-09 18:40 568一:单词: tokenization 标志化(token ... -
java dos下运行(有包)
2011-04-15 01:25 10211.使用notepad打开记事本编写类注意写正确。 publ ...
相关推荐
1. 成员内部类:即在一个类中直接定义的内部类,成员内部类与普通的成员没什么区别,可以与普通成员一样进行修饰和限制。成员内部类不能含有 static 的变量和方法。 2. 局部内部类:即在一个方法中定义的内部类,...
内部类,顾名思义,是在另一个类的内部定义的类。这种独特的结构让内部类能够访问包含它的外部类的私有成员,包括变量和方法。这为编程提供了一种封装更紧密、功能更灵活的设计模式。内部类可以被声明为静态、受保护...
Java内部类总结 Java内部类是指在一个外部类的内部再定义一个类。内部类作为外部类的一个成员,并且依附...但是,内部类也存在一些限制和注意事项,例如成员内部类不能定义静态成员,局部内部类不能有访问说明符等等。
1. **内部类**:内部类是一种特殊的类,定义在另一个类(外部类)的内部。它可以访问外部类的所有成员(包括私有成员),同时也可以被外部类所访问。 2. **静态成员变量**:静态成员变量是类级别的变量,可以通过...
方法内部类是在方法内部定义的类,它只能在该方法内部访问。 ##### 方法内部类的特点 1. **实例化**:只能在定义它的方法内部实例化。 2. **访问限制**:不能访问该方法内的非final局部变量,因为局部变量是临时的...
静态内部类只能够访问外部类的静态成员,因此存在访问限制。 - **访问格式**: - 访问静态内部类的非静态成员: ```java Outer.Inner oi = new Outer.Inner().function(); ``` - 访问静态内部类的静态成员: `...
Java内部类是Java语言提供的一种独特机制,它允许在一个类的内部定义另一个类。这种设计模式使得代码结构更紧凑,可以更好地封装和隐藏实现细节,同时也增强了代码的复用性。内部类分为几种类型,包括成员内部类、...
通常情况下,非内部类不能声明为`private`或`protected`,这限制了类之间的访问控制。然而,内部类则可以声明为`private`,从而实现对内部类的完全隐藏,增强了类的设计安全性。 **示例:** ```java public class ...
### Java内部类(DOC)详解 #### 一、概述 Java内部类是Java语言中一个...综上所述,Java内部类提供了灵活的对象组织方式和代码封装机制,特别是静态成员类和成员类各有特点,在实际开发中可以根据具体需求选择使用。
- **非静态成员**:匿名内部类拥有对外部类的隐式引用,可以访问外部类的非静态成员,但必须通过`OuterClass.this`来明确指出。 3. **局部变量的final限制** 如果匿名内部类需要访问局部变量,那么这个局部变量...
Java内部类是Java语言的一个特色特性,它允许我们在一个类的内部定义另一个类。这种设计模式在处理一些特定情况时非常有用,例如实现匿名回调、封装特定逻辑或创建与外部类有紧密关系的类。本篇文章将深入探讨Java...
内部类(Inner Class)是 Java 中一种特殊类的定义方式,它允许在一个类的内部定义另一个类。这种设计模式提供了更为灵活的编程机制,可以更加方便地访问外部类的成员变量和方法。根据内部类的不同特性,可以将其...
接着,局部内部类是在方法、构造器或者代码块内部定义的类。它们的作用域仅限于定义它们的块,因此它们可以用来封装局部变量。局部内部类不能声明为静态,也不能有静态成员。由于其作用域的限制,它们通常用于实现...
- 成员内部类:定义在外部类的成员位置,可以直接访问外部类的所有成员。 - 局部内部类:定义在方法或者作用域块中,不能有访问权限修饰符,只能访问方法中被final修饰的局部变量。 - 匿名内部类:没有类名的局部...
在Java编程语言中,内部类允许在一个类的内部定义另一个类。根据内部类是否声明为static,它们被分为非静态内部类(也称为成员内部类)和静态内部类。 #### 二、静态内部类的特点 静态内部类具有以下特点: 1. **...
内部类是定义在一个类内部的类,它可以访问外部类的所有成员,包括私有成员。内部类分为四种类型:成员内部类、局部内部类、匿名内部类和静态内部类。成员内部类就像普通的类成员,可以有自己的访问修饰符;局部内部...
- **作用域**:静态内部类的作用域与普通静态成员相同,可以在整个外部类的范围内被访问。 - **生命周期**:由于不依赖外部类实例,静态内部类的生命周期独立于外部类,可以单独存在。 **2. 访问权限** - 静态内部...
内部类是Java语言中一个独特的特性,它允许在一个类的定义内部定义另一个类。内部类提供了更高级别的封装,使得代码更加模块化,并且能够访问外部类的所有成员,包括私有成员。本文将深入探讨Java中的四种内部类:非...