java基础 内部类使用总结
来源:互联网 发布:东安格利亚大学知乎 编辑:程序博客网 时间:2024/06/10 10:27
我们经常看到在一个类中定义一个类,这就是内部类,内部类大概可以分为
1:静态内部类
2:成员内部类
3:局部内部类
4:匿名内部类
现在分别讲下 用demo的形式演示
静态内部类
package com.zhimore4;
public class OuterClass {
private static int age = 20;
public static String name = "zhangsan";
static class InnerClass{
public static void show(){
System.out.println(name+"今年"+age+"岁了");
}
}
}
使用:
OuterClass.InnerClass.show();如果静态内部类中的方法是静态的,这样直接调用就可以了,如果方法不是静态方法,那么它不能直接访问外部类的成员,因为内部类有一个很重要的点就是内部类可以直接访问外部类的成员,所以如果想访问外部类的成员,就不能有非静态方法,而且静态内部类不能使用private修饰以及它里面的成员也不能,其他修饰符都可以,如果是非静态方法这样调用,InnerClass innerClass = new OuterClass.InnerClass();innerClass.show();
成员内部类
package com.zhimore4;
public class OuterClass {
private int age = 20;
public static String name = "zhangsan";
protected class InnerClass{
protected void show(){
System.out.println(name+"今年"+age+"岁了");
}
}
}
使用:
package com.zhimore4;、
import com.zhimore4.OuterClass.InnerClass;
public class Client {
public static void main(String[] args) {
OuterClass outerClass = new OuterClass();
InnerClass innerClass = outerClass.new InnerClass();
innerClass.show();
}
}
成员内部类可以访问外部类的静态和非静态成员(方法和变量),如果内部类的方法是静态的,那么要求内部类也是静态的,所以成员内部类的方法都是非静态的,
局部内部类
所谓局部内部类就是定义在方法中的类,
package com.zhimore4;
public class OuterClass {
private static int age = 20;
public static String name = "zhangsan";
public void m2(){
class InnerClass {
public void show(){
System.out.println(name+"今年"+age);
}
}
//创建InnerClass对象,调用show方法
InnerClass innerClass = new InnerClass();
innerClass.show();
}
}
使用:
package com.zhimore4;
public class Client {
public static void main(String[] args) {
OuterClass outerClass = new OuterClass();
outerClass.m2();
}
}
局部内部类访问局部变量的时候,变量要用final修饰,这是为了再给变量赋值,
匿名内部类
package com.zhimore4;
public class OuterClass {
Listener mListener;
public void show(Listener listener){
System.out.println(listener.getName());
}
interface Listener{
String getName();
}
}
使用:
package com.zhimore4;
import com.zhimore4.OuterClass.Listener;
public class Client {
public static void main(String[] args) {
OuterClass outerClass = new OuterClass();
outerClass.show(new Listener() {
@Override
public String getName() {
return "张三";
}
});
}
}
这在android中经常用到!
- java基础 内部类使用总结
- Java内部类使用总结
- Java内部类使用总结
- Java内部类使用总结
- Java内部类使用总结
- Java内部类使用总结
- java基础 Java内部类总结
- 黑马程序员:Java基础总结----内部类
- java基础总结——内部类
- java基础 内部类 简单总结
- Java基础(五)----内部类总结
- 【Java基础总结】-接口与内部类
- Java 内部类的使用 -- JAVA 基础
- [java基础]匿名内部类的使用
- java基础---内部类的使用
- Java内部类的使用总结
- java基础 内部类
- java基础--内部类
- 多线程下载之断点续传采用随机文件读取流,HttpConnection实现
- 转:解决 unresolved external symbol 无法解析
- 【SPOJ-ARRAYSUB】subarrays【单调队列】
- 实现JTable的动态更新
- 读uCOSIII源码笔记
- java基础 内部类使用总结
- C语言文件操作函数大全
- Apache shiro 笔记整理之编程式授权
- Gartner诠释什么是真正的BI分析平台
- Leetcode 142
- Openstack镜像和密码
- 模拟登陆
- c与c++不同的总结
- iOS中Container View Controller的使用