JAVA学习十四:内部类
来源:互联网 发布:其他设备 网络控制器 编辑:程序博客网 时间:2024/05/20 04:48
Java面向对象——内部类
内部类的访问规则:
1、内部类可以直接访问外部类中的成员,包括私有的。之所以可以直接访问外部类中的成员,是因为内部类中持有了一个外部类的引用;格式:外部类名.this
2、外部类要访问内部类,必须建立内部类对象。
访问格式:
外部类名.内部类名变量名 = new外部类().new内部类();
例如:Outer.Inner in = new Outer().new Inner();
1、当内部类定义在外部类的成员位置上时,而且是非私有化的,那么就可以在外部其它类中直接建立内部类对象。
2、当内部类在成员位置上,就可以被成员修饰符所修饰;
比如:private:将内部类在外部类中进行封装。
Static:让内部类具备静态特性;但是当内部类被static修饰后,只能直接访问外部类中的static成员,出现了访问局限性。
在外部其它类中,直接访问static内部类的非静态成员:
//创建外部类的内部类对象,并调用内部类的方法。
new Outer.Innter().function();
在外部其它类中,直接访问static内部类的静态成员:
//静态直接使用类名调用方法:外部类名.内部类名.方法();
Outer.Innter.function();
注:当内部类中定义了静态成员,那么该内部类必须也是static修饰的。
当外部类中的静态方法访问内部类时,内部类也必须是静态的。
内部类定义在局部位置时:
1、不可以被成员修饰符所修饰。
2、可以直接访问外部类中的成员,因为还持有外部类中的引用,但是不可以访问它所在的局部中的变量,只能访问被final修饰的局部变量。
匿名内部类:
1、匿名内部类其实就是内部类的简写格式。
2、定义匿名内部类的前提:内部类必须是继承一个类或者是实现一个接口;
3、匿名内部类的格式:new父类或者接口名(){定义子类的内容}
4、其实匿名内部类就是一个匿名子类对象;而且这个对象带着内容。
5、匿名内部类中定义的方法最好不要超过3个。
课堂练习题:内部类和匿名内部类的应用
interface Inter
{
public abstract void mothis();
}
/*
//内部类
class Test
{
//Inner实现Inter中的mothis()方法。因为Inter是抽象的,不能创建对像。
static class Inner implements Inter
{
//实现父类中的mothis()方法,方便主函数的调用。
public void mothis()
{
System.out.println("内部类");
}
}
//fulou() 为了能调动Inner中的mothis()函数,fulou()必须存储一个Inner类型的对象。
public static Inter fulou()
{
/*
//Inter 父类引用指向子类对像.
//Inter m = new Inner();
//把Inner类型的对象,返回到fulou()中,方便主函数中的fulou()调用mothis(). fulou().mothis();
//return m;
*/
//上面两句的简写格式.
return new Inner();
}
}
*/
//匿名内部类
class Test
{
public static Inter fulou()
{
//匿名内部类,因为Inner类是匿名的,所在Inter父引用指向一个子类对像的实体匿名对像。
return new Inter()
{
public void mothis()
{
System.out.println("匿名内部类");
}
};
}
}
class InterText
{
public static void main(String[] args)
{
Test.fulou().mothis();
/*
1、"Test.fulou()" Test想要调整动fulou()这个函数,那么fulou()这个函数必须是静态的,因为只有静态的fulou()函数才能直接被Test类名调用。
2、mothis()这个函数只能被自己所属类型的对象调用。fulou().mothis() fulou()这个函数想要调动mothis()这个函数,那么fulou()这个函数里面必须存储了一个Inner的对象,因为mothis()只能被自己所属的类对象所调动。所以fulou()这个函数的返回类型必须是一个Inner类型的对象。
*/
}
}
- JAVA学习十四:内部类
- Java面向对象笔记(十四)内部类
- java基础十四 内部类详解
- Java学习:内部类
- Java内部类学习
- java内部类学习!!
- java学习---内部类
- Java 内部类学习
- 【JAVA学习】内部类
- java学习-内部类
- java内部类学习
- JAVA学习:内部类
- JAVA学习-内部类
- JAVA学习--内部类
- JAVA内部类学习
- Java内部类学习
- Java学习:内部类
- java学习--内部类
- POJ 2828 Buy Tickets(线段树)
- uva748 ( 高精度 浮点数幂)
- FLASH轮播广告 在谷歌浏览器中不显示的解决办法(FLash轮播放广告在谷歌浏览器中无法显示处理方法)
- JAVA学习十二:接口(interface)
- JAVA学习十三:多态性
- JAVA学习十四:内部类
- POJ 2318 几何初步 + 二分 及其 姊妹题 POJ 2398
- css 箭头
- JAVA学习十五:异常
- JAVA学习十六:包(package)
- 暑期训练-泰山挑夫1
- rails-sidekiq
- JAVA学习十七:多线程
- HDU 4604 Deque 二分最长上升子序列