前言
内部类:写在一个类里面的类
1. 普通的内部类
1)可以访问外部类的所有变量和方法
2) 内部里面不能有类变量和类方法
3) 内部类在外部不能直接访问
2. 静态内部类
3. 局部内部类
4. 匿名内部类
提示:以下是本篇文章正文内容,下面案例可供参考
一、普通内部类
内部类:写在一个类里面的类
1. 普通的内部类
1)可以访问外部类的所有变量和方法
2) 内部里面不能有类变量和类方法
3) 内部类在外部不能直接访问
package chapter08;
public class Example01 {
int a;
void a(){
}
class A{
//内部类
int b = a;
void b(){
a();
}
}
public static void main(String[] args) {
Example01 e = new Example01();
A a = e.new A();
a.b();
class User{
void say(){
System.out.println("----------------");
}
}
User user = new User();
user.say();
}
}
/* [email protected]
* 内部类:
* 写在一个类里面的类
* 1. 普通的内部类
* 1)可以访问外部类的所有变量和方法
* 2) 内部里面不能有类变量和类方法
* 3) 内部类在外部不能直接访问
* 2. 静态内部类
* 3. 局部内部类
* 4. 匿名内部类
*/
二、静态内部类
1.静态内部类里面不能访问外部类的非静态变量和方法
代码如下(示例):
package chapter08;
public class Example02 {
public static class A{
void a(){
System.out.println("-------------");
}
}
public static void main(String[] args) {
A a = new Example02.A();
}
}
/*
* 静态内部类里面不能访问外部类的非静态变量和方法
*/
三、匿名内部类
1.除了使用父类的构造方法外还有类体,此类体被认为是一个子类去掉类声明后的类体,称作匿名类。匿名类就是一个子类
2.由于匿名类是一个子类,但没有类名,所有在用匿名类创建对象时,要直接使用父类的构造方法
package chapter08;
public class Example04 {
public void click(OnClick onClick){
onClick.doClick();
}
public static void main(String[] args) {
Example04 e = new Example04();
e.click(new OnClick() {
@Override
public void doClick() {
System.out.println("不要点击我");
}
});
}
}
interface OnClick{
public void doClick();
}
package chapter08;
public class Example03 {
public static void main(String[] args) {
User user = new User(){
@Override
void say() {
super.say();
System.out.println("吃饭了吗");
}
};
User u = new MyUser();
user.say();
}
}
class User{
void say(){
System.out.println("hello");
}
}
class MyUser extends User{
@Override
void say() {
super.say();
System.out.println("吃饭了吗");
}
}