内部类,对象的产生过程,所有的超类Object,包,String类

——<a href="" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! ——-

一.内部类

1.内部类的概念:一个类在另外一个类的内部,那么这个类就叫内部类,另一个类叫做外部类

2.内部类的表现形式:

class A

{

int num ;

void display(){……}

class B

{

int age ;

void show(){……..}

}

}

所以,可以发现内部类也是一个完整的类,也具有类的所有的组成部分,它只是被定义在了另一个类的内部而已。

3.内部类的好处:内部类可以直接访问外部类的所有的成员(包括私有的,因为是在A的本类中访问),此时内部类相当于外部类的一个成员也可以被成员修饰符修饰,具有成员的访问特性,这样就可以隐藏不想对外暴露的类(Iterator的子类就实现在各集合的内部)。

4.修饰内部类的修饰符

权限修饰符:

1)public:表明内部类可以被外部的第3方类访问,定义对象

2)protect:可以被子类访问

3)默认权限:可以被包中的类访问

4)private:内部类只能在本外部类中访问,不能被第3方类访问,对本包中的其他的起到了隐藏作用。

静态修饰符:static:内部类在成员上时也可以被静态修饰,此时的内部类叫做静态内部类

1)静态内部类随着外部类的加载而加载

2)静态内部类只能访问外部类静态成员

3)静态内部类中可以有静态成员也可以有非静态成员

4)有静态成员的内部类一定是静态内部类

abstract class A

{

abstract void method();

}

class B

{

void excute()

{

new A()

{

void method()

{

执行代码

}

}.method();

}

}

1)匿名内部类实际上就是一个匿名的子类对象

2)A类可以是抽象类,可以是接口,也可以普通的类,被重写的方法也可以是普通的方法,抽象方法。

3)new A()…….就是一个匿名内部类,创建的实际上是一个A类的子类的对象。

4)匿名内部类只能使用一次,因为这个类没有名称,不能再次调用

5)匿名内部类不能包含static成员,从父类继承的可以,不能自己增加。(因为有static成员的内部类是静态内部,new的时候在类上没有办法声明static)

6)匿名内部类若出现在函数的参数中时,此时实际上时多态,将匿名内部类(是一个子类)赋给父类的引用。调用时不能直接调用子类新增的方法和变量。

6.内部类,外部类,第3方类的访问关系:

说明:1.内部类中有静态成员,该内部类是静态内部类。

2.静态内部类中的方法(无论是否静态)只能访问外部类的静态方法。

3.外部类的静态方法只能访问静态内部类。

4.当内部类中的方法中,内部类的成员位置出现了和外部类相同成员变量,内部类中访问局部可以直接写变量名,访问内部类中的要加this不能省略,要访问外部类中的要使用外部类名.this.引用不能省略。当没有相同时,可以省略不写,会默认加上。

5.匿名内部类可以应用于接口回调,可以用于开发事件驱动。

二.对象的产生过程

我们使用new来创建一个对象时,内存中构建对象的执行流程是:

1.不考虑继承关系时,执行流程:

2.当考虑继承关系时,创建子类的对象:

1).执行父类的静态代码块

2).在执行子类的静态代码块。

3).在执行父类的构造函数

4).最后执行子类的构造函数。

人若软弱就是自己最大的敌人

内部类,对象的产生过程,所有的超类Object,包,String类

相关文章:

你感兴趣的文章:

标签云: