目录
一、内部类
1.数据访问
2.静态内部类
二、内部类和外部类区别
1.访问修饰符:
2.static修饰:
3.使用:
三、匿名类
PS:小练习
一、内部类
内部类是指将一个类定义在另一个里面。
内部类分为static内部类和普通内部类。
public class A{
class B{//内部类
}
}
这个内编译后会产生两个.class文件,分别是A.class、A$B.class。
一个类可以有多个内部类,内部类可以实现接口和继承类,内部类可以解决Java单继承问题,因为内部类和外部类可以相互访问。
1.数据访问
外部类和内部类可以相互访问类中的成员,包括私有的
package structure;
public class A {
public String name;
private int age;
public class B{//内部类
public String bName;
private int bAge;
private void setAge(){
name="";
this.bAge=age;
}
}
public class C{
public String cName;
private int cAge;
}
public void compareAge(){
B b=new B();
this.age=b.bAge;
b.setAge();
C c=new C();
c.cAge=10;
}
public static void main(String[] args) {
}
}
内部类的实例化,内部类依托于外部类,所以内部类的实例化要先实例化外部类,然后再实例化内部类。
package structure;
public class ATest {
public static void main(String[] args) {
A a=new A();
A.B b=a.new B();
b.bName="";
}
}
2.静态内部类
package structure;
public class AA {
static class BB{//static内部类
}
}
静态内部类不能直接访问外部类的成员,可以直接访问外部类的静态成员。
package structure;
public class AATest {
public static void main(String[] args) {
AA aa=new AA();
AA.BB bb=new AA.BB();
}
}
所有的访问修饰符都可以修饰内部类
二、内部类和外部类区别
1.访问修饰符:
外部类只有两种访问权限:public以及package-access
内部类可以有四种访问权限:public、protected、package-access、private
2.static修饰:
外部类不可以使用static修饰。
3.使用:
外部类可以直接被使用,内部类的使用依赖于外部类。
三、匿名类
匿名类是没有明确名称的类。
public static void main(String[] args) {
Pet pet = new Dog();
pet.cry();
//匿名类
Pet p = new Pet() {
@Override
public void cry() {
System.out.println("喵 喵 喵");
}
};
p.cry();
}
匿名类不能使用修饰符,在方法的内部,对外隐藏。
不能是static,隐式final类。
匿名类没有类名,没有构造方法。
匿名类可以访问类中的成员,不能访问方法中的变量,除非是final型的。文章来源:https://www.toymoban.com/news/detail-678089.html
匿名类一般是实现接口、继承抽象类,相当于实现和继承了这个接口/类。文章来源地址https://www.toymoban.com/news/detail-678089.html
package structure;
public abstract class Pet {
public abstract void cry();
//匿名类
Pet pet = new Pet() {
@Override
public void cry() {
System.out.println("喵喵喵");
}
};
}
PS:小练习
package structure;
public class Outer {
private int index=100;
void print(){
Inner i=new Inner();
i.print();
}
class Inner{
void print(){
System.out.println(index);
}
}
}
class Test{
public static void main(String[] args) {
Outer outer=new Outer();
outer.print();
}
}
到了这里,关于内部类和匿名类的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!