您的位置:首页 > 职场人生

黑马程序员——基础知识总结_内部类

2015-06-15 11:45 351 查看
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-

[b]内部类与生活的联系:[/b]

一个人的心脏与个体是紧密联系的,心脏的跳动向身体的各个地方输血,使得个体具有生命力。心脏访问,改变了个体的属性,个体也可以通过运动来改变和访问心脏的属性(呼吸使得心脏跳动可以持续跳动)。而心脏最为个体的内在事物而存在,于是为了更好的描述这种事物,java引入了内部类。

第一话:内部类的特点


[b]内部类访问规则:[/b]

1.内部类可以直接访问外部类的成员,包括私有。

2.外部类访问内部类必须创建内部对象

[b]访问格式:[/b]

1.当内部类定义在其他外部类成员位置上,而且非私有,可以直接在外部其他类中直接建立内部类对象。(具体格式看代码1注释)

2.在成员位置上就可以被成员修饰符修饰。

—-如:private 将内部类封装

——-:static 内部类就具备静态特性

代码1:

//外部类
class Outer
{
private int a = 3;
//若内部类要访问静态成员b则要将内部类
private static int b = 3;
//内部类
class Inner
{    int a = 1;
public void getOuter()
{
int a = 2;
//System.out.println(b);//报错要将内部类弄成静态的
//访问getOuter()方法的内部的局部变量
System.out.println("getOuter局部变量a="+a);
//访问内部类Inner的成员变量this.a
System.out.println("Inner成员变量a="+this.a);
//访问外部类Outer的成员变量Outer.this.a
System.out.println("Outer成员私有变量a="+Outer.this.a);
}
}
public void buildInner()
{
//创建内部类并调用内部类的方法成员
new Inner().getOuter();
}
}
//外部其他类InnerDemo
class InnerDemo
{
public static void main(String args)
{
//通过外部类的成员方法来创建内部类
new Outer().buildeInner();
//通过其他外部类来直接创建内部类并调用内部类成员方法
Outer.Inner in = new Outer().new Inner();
in.getOuter();
}
}


结果图:



第二话:匿名内部类


[b]匿名内部类的概述:[/b]

1.是内部类的简写。

2.格式:new 父类或者接口(){定义子类的内容}

3.匿名内部类就是一个匿名子类对象,而且是带内容的子类对象。

4.匿名内部类中定义的方法最好不要超过3个。因为内部类达不到简化没有出现的意义就没那么明显了。

注意:创建匿名内部类时不要创建父类没有的方法,否则编译报错,除非有处理。

[b]匿名内部类的运用:[/b]

//定义接口
interface INTER
{
//虚拟机自动转化为public abstract void method()
void method();
}
class Test
{

static INTER function()
{
//通过匿名内部类 new INTER(){复写父类method方法}
//创建匿名内部类
return new INTER()
{
public void method()
{                      System.out.println("method..1");
}
public void method2()
{}
};
//若出现匿名子类调用父类没有的方法则报错
/*return new INTER()
{
public void method()
{                      System.out.println("method..1");
}
public void method2()
{}
}.method2();
*/
}
}

class InnerClassTest
{
public static void main(String[] args)
{
Test.function().method();//
}


结果图:



[b]小结:[/b]

内部类的出现使得java具有更强的描述对象的能力。

匿名内部类经常运用在多态出现的场合,这个可以使得程序可以拥有更大的扩展性。对于内部类的研究有利于我们更深入了解面向对象
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息