首页 > 编程语言 > 详细

java中的内部类

时间:2019-04-22 13:05:04      阅读:133      评论:0      收藏:0      [点我收藏+]

知识点

       内部类的分类

       如何创建成员内部类对象

       当外部类和内部类变量重名时,如何区分

       局部内部一般是怎样使用的

一:内部类的分类

    在java中,一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类,内部类一般分类,可以分为成员内部类、局部内部类、匿名内部类

(1)成员内部类

public class Person {//Person是外部类
//成员内部类(非静态的static的)
public class Mother{
public Mother(){
}
}

//成员内部类(静态的)
public static class Father{
}
}

内部类Mother和Father可以看做外部类Person的一个成员,Mother是非静态的成员内部类,Father是静态的成员内部类,对于这两种内部类对象创建,非静态的内部对象
先创建外部类的对象,然后通过外部类的对象调用内部类的构造器,而创建静态的内部类对象,则是直接调用内部类的构造器,具体创建代码如下:
public class Test {
public static void main(String[] args) {
//创建非静态内部类的对象(先创建外部类的对象,然后通过外部类的对象调用内部类的构造器)
Person p=new Person();
Person.Mother m=p.new Mother();

//创建静态内部类的对象(外部类直接调用内部类的构造器)
Person.Father f=new Person.Father();
}
}

我们在成员内部类中,是可以直接访问外部类的成员属性和方法(包括static和private修饰的成员)
当内部类和外部类的属性和方法重名时,内部类中默认调用内部类自己的属性和成员方法,若要访问外部重名的属性和方法使用
外部类.this.成员变量
外部类.this.成员方法
如果外部类想访问内部类成员,需要先创建一个成员内部类对象,然后通过指向这个对象的引用去访问
public class Person {
private String name="张三";
static int age=21;
    public  void showInfo(){
System.out.println("外部类的成员方法!");
}


//成员内部类(非静态的static的)
public class Mother{
String name="李四";
int age;
public void setName(String name){
System.out.println(name);
System.out.println(this.name);
System.out.println(Person.this.name);//调用外部类中的private修饰的name属性
System.out.println(Person.this.age);//调用外部类中的static修饰的age属性

}

//内部类中调用外部类的成员方法
public void innershowInfo(){
showInfo();
}
}
}
 

java中的内部类

原文:https://www.cnblogs.com/shuaifing/p/10749346.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!