匿名内部类和内部类
2015-10-08 21:12
218 查看
内部类: 在 java 中 ,除了在类中定义属性和方法之外,还可以在再定义类。定义在一个类内部的类被称为内部类;
内部类的特点:
内部类能访问其所处类的私有属性和方法;
内部类能够隐藏起来,不被同一个包中的其他类访问。如果一个类只对某个类来使用,那么他就可以将其定义为内部类;
匿名内部类可以方便的用于在回调方法中,典型应用是事件处理;
内部类可以声明为抽象类,因此可以被其他的内部类继承,也可以声明为final
内部类和外部类不同,内部类可以声明为private,或是protected ,外部类只能用public dafault
内部类可以声明为static 的,但此时就不能使用外层封装类的非static 的成员变量
如不是static 内部类,内部类的成员不能声明为static的,顶层类的成员或是 static的内部类才可以声明为static的成员变量;
注意“: 除了 可以在定义在类中与方法并列之外,还可以定义在方法的内部或者是自由块中,此时的被称为,局部内部类,只能在方法体中或是自由块中使用;
class Outid {
abstract class Inner {
public void inner() {
System.out.println("内部类方法");
}
public abstract void show();
}
class B extends Inner {
@Override
public void show() {
System.out.println("我是抽象内部类的子类");
}
}
// public void out(){
// new Inner().inner();
// }
}
public class InnerClassDemo {
public static void main(String[] args) {
// new Outid().out();
new Outid().new B().show();
}
}
匿名内部类:
内部类可以在类中或是方法中定义,匿名内部类是指在定义时没有名称的内部类。一般用于方法中,如果某个类只使用一次,此时可以采用匿名内部类的方法定义。匿名内部类定义。比如按钮只使用一次。
因为匿名内部类没有名字,因此需要在定义是同时使用,这就是在定义时使用new关键字作为开始的原因,new关键字的后面跟的是匿名内部类需要的继承父类名或是实现的接口名。在匿名类的主体中一般需要重写父类中的某些方法或者实现接口中的所有方法;
内部类的特点:
内部类能访问其所处类的私有属性和方法;
内部类能够隐藏起来,不被同一个包中的其他类访问。如果一个类只对某个类来使用,那么他就可以将其定义为内部类;
匿名内部类可以方便的用于在回调方法中,典型应用是事件处理;
内部类可以声明为抽象类,因此可以被其他的内部类继承,也可以声明为final
内部类和外部类不同,内部类可以声明为private,或是protected ,外部类只能用public dafault
内部类可以声明为static 的,但此时就不能使用外层封装类的非static 的成员变量
如不是static 内部类,内部类的成员不能声明为static的,顶层类的成员或是 static的内部类才可以声明为static的成员变量;
注意“: 除了 可以在定义在类中与方法并列之外,还可以定义在方法的内部或者是自由块中,此时的被称为,局部内部类,只能在方法体中或是自由块中使用;
class Outid {
abstract class Inner {
public void inner() {
System.out.println("内部类方法");
}
public abstract void show();
}
class B extends Inner {
@Override
public void show() {
System.out.println("我是抽象内部类的子类");
}
}
// public void out(){
// new Inner().inner();
// }
}
public class InnerClassDemo {
public static void main(String[] args) {
// new Outid().out();
new Outid().new B().show();
}
}
匿名内部类:
内部类可以在类中或是方法中定义,匿名内部类是指在定义时没有名称的内部类。一般用于方法中,如果某个类只使用一次,此时可以采用匿名内部类的方法定义。匿名内部类定义。比如按钮只使用一次。
因为匿名内部类没有名字,因此需要在定义是同时使用,这就是在定义时使用new关键字作为开始的原因,new关键字的后面跟的是匿名内部类需要的继承父类名或是实现的接口名。在匿名类的主体中一般需要重写父类中的某些方法或者实现接口中的所有方法;
相关文章推荐
- 【读书笔记】GCD-网络编程要不要使用GCD
- XSS跨站脚本攻击剖析与防御
- 【读书笔记】GCD-网络编程要不要使用GCD
- Codeforces Round #324 (Div. 2)C. Marina and Vasya set
- Anroid常用的辅助类(一)——网络相关
- hdoj Work 5326 (并查集+技巧) 好题
- 如何将GDB中需要的调试信息输出到文件
- Lintcode 二叉树前序遍历
- 黑马程序员—Foundation框架之NSArray与NSMutableArray
- 3Sum Closest
- 剑指offer—求1+2+3+...+n
- java文件读写方法
- UIWebView和WKWebView 改变HTML 图片尺寸 及 字体大小
- C#中的特定类型数组的默认值
- 第2章 变量和基本类型 附2 --声明和定义的区别
- RTSP协议
- leetcode@ [18]4Sum
- Android开发中versionCode和versionName解析
- ListView全行选择
- Cocos2dx控件 Text和TextField