java内部类有什么好处?为什么需要内部类?详细点。。 15
3个回答
展开全部
内部类就是在一个类的内部定义的类,内部类中不能定义静态成员(静态成员不是对象的特性,只是为了找一个容身之处,所以需要放到一个类中而已
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
java 内部类分为4种:
1)静态内部类:static修饰的类叫做静态类,把静态类放到一个类的内部,就叫做静态内部类
特点:可以访问外界:静态方法/静态属性,不能访问实例资源
案例:
import inner.Foo.Koo;//一定要把Koo静态内部类导入进来
public class Demo9 {
public static void main(String[] args) {
Koo koo = new Koo();
koo.add();
}
}
class Foo{
int a = 12;//实例变量
static int aa=16;
public static void show(){ System.out.println("静态的方法");}
//静态内部类
static class Koo{
public void add(){
// System.out.println(a); 静态内部类不能访问实例资源(变量)
System.out.println(aa);
show();//静态内部类可以访问外界的静态属性和方法
}
}
}
2)成员内部类:在一个类的内部,直接定义了一个不用static修饰的类,当创建成员内部类对象的时候,外部类要先创建出来。
特点:成员内部类,可以访问外界的属性和方法
案例:
import inner.Foo1.Koo1;
public class Demo10 {
public static void main(String[] args) {
//Koo1 koo1 = new Koo1();要创建成员内部类,则必须要先创建外部类对象
Foo1 foo1 = new Foo1();
//记住(笔试会考)
Koo1 koo1 = foo1.new Koo1();
koo1.show();
}
}
class Foo1{
int a =12;
static int aa = 16;
class Koo1{
void show(){
System.out.println(a+" , "+aa);
}
}
}
3)局部内部类:使用非常的少,特点在一个方法内定义一个类(企业开发中及其少用)
特点:局部内部类,在引用外界的变量,该变量必须要使用final修饰
案例:
public class Demo11 {
public static void main(String[] args) {
final int a = 12;
final int b = 13;
class Foo2{
int c = 16;
public int add(){
//在局部内部类中,引用外界的变量,则变量必须用final修饰
return a+b+c;
}
}
Foo2 foo2 = new Foo2();
System.out.println(foo2.add());
}
}
4)匿名内部类:对原来的类的一个继承
特点:跟接口/抽象类结合使用
eg new 类名/接口名 {
重写方法
};
案例:
public class Demo1 {
public static void main(String[] args) {
Koo koo = new Koo(){
//可以重写方法
public String toString() {
return "生成了一个Koo的对象";
}
//在匿名内部类里面不可以创建新的方法
//public void show(){
//System.out.println("liu");
//}
};
System.out.println(koo);
//koo.show();
}
}
class Koo{
}
1)静态内部类:static修饰的类叫做静态类,把静态类放到一个类的内部,就叫做静态内部类
特点:可以访问外界:静态方法/静态属性,不能访问实例资源
案例:
import inner.Foo.Koo;//一定要把Koo静态内部类导入进来
public class Demo9 {
public static void main(String[] args) {
Koo koo = new Koo();
koo.add();
}
}
class Foo{
int a = 12;//实例变量
static int aa=16;
public static void show(){ System.out.println("静态的方法");}
//静态内部类
static class Koo{
public void add(){
// System.out.println(a); 静态内部类不能访问实例资源(变量)
System.out.println(aa);
show();//静态内部类可以访问外界的静态属性和方法
}
}
}
2)成员内部类:在一个类的内部,直接定义了一个不用static修饰的类,当创建成员内部类对象的时候,外部类要先创建出来。
特点:成员内部类,可以访问外界的属性和方法
案例:
import inner.Foo1.Koo1;
public class Demo10 {
public static void main(String[] args) {
//Koo1 koo1 = new Koo1();要创建成员内部类,则必须要先创建外部类对象
Foo1 foo1 = new Foo1();
//记住(笔试会考)
Koo1 koo1 = foo1.new Koo1();
koo1.show();
}
}
class Foo1{
int a =12;
static int aa = 16;
class Koo1{
void show(){
System.out.println(a+" , "+aa);
}
}
}
3)局部内部类:使用非常的少,特点在一个方法内定义一个类(企业开发中及其少用)
特点:局部内部类,在引用外界的变量,该变量必须要使用final修饰
案例:
public class Demo11 {
public static void main(String[] args) {
final int a = 12;
final int b = 13;
class Foo2{
int c = 16;
public int add(){
//在局部内部类中,引用外界的变量,则变量必须用final修饰
return a+b+c;
}
}
Foo2 foo2 = new Foo2();
System.out.println(foo2.add());
}
}
4)匿名内部类:对原来的类的一个继承
特点:跟接口/抽象类结合使用
eg new 类名/接口名 {
重写方法
};
案例:
public class Demo1 {
public static void main(String[] args) {
Koo koo = new Koo(){
//可以重写方法
public String toString() {
return "生成了一个Koo的对象";
}
//在匿名内部类里面不可以创建新的方法
//public void show(){
//System.out.println("liu");
//}
};
System.out.println(koo);
//koo.show();
}
}
class Koo{
}
追问
内部类的引入解决了Java 多继承的问题 ? 这个是怎么回事?有例子吗
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询