------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
今天我着重看了内部类,包括作用和分类。内部类这个概念对我来说一直都是模棱两可的,不甚明白,今天我在此总结一下。
内部类的作用:
1.内部类可以很好的实现隐藏,一般的非内部类,是不允许有private与protected权限的,但内部类可以
2.内部类拥有所在外部类的所有元素的访问权限
3.可是实现多重继承
public class Example1 {
public String name()
{
return "张三";
}
}
public class Example2 {
public int age()
{
return 25;
}
}
public class MainExample
{
private class test1 extends Example1
{
public String name()
{
return super.name();
}
}
private class test2 extends Example2
{
public int age()
{
return super.age();
}
}
public String name()
{
return new test1().name();
}
public int age()
{
return new test2().age();
}
public static void main(String args[])
{
MainExample me=new MainExample();
System.out.println("姓名:"+me.name());
System.out.println("年龄:"+me.age());
}
}
这个例子是我第一次在网上看到,以前学继承时毕老师就明确说明了没有多继承,因为如果继承的两个类有同名方法时会出现错误。但是内部类的使用可以实现多重继承,也避免了单继承的局限性。
4.可以避免修改接口而实现同一个类中两种同名方法的调用。
内部类的分类
1 成员内部类:作为外部类的一个成员存在,于外部类的属性,方法并列。内部类于外部类的实例变量可以共存。在内部类中访问实例变量用this.属性,在内部类访问外部类的实例变量用外部类名.this.属性。成员内部类可以访问外部类的私有成员或属性。如果在外部类的外部访问内部类,使用Outer.Inner.在外部类的外部,要new一个内部类对象,应该
Outer.Inner in = Outer.new.Inner();
2 局部内部类:在方法中定义的内部类称为局部内部类,于局部变量相似,在局部内部类前不加public和 private,其范围为定义它的代码块。要想使用局部内部类时需要生成对象,对象调用方法,在方法中才能调用其局部内部类。
3 静态内部类 静态内部类只能访问外部类的静态成员。静态内部类的对象可以直接生成:Outer.Inner in = new Outer.Inner();而不需要通过外部类的对象来生成。
4 匿名内部类 匿名内部类是一种特殊的局部内部类,它是通过匿名类实现接口。匿名内部类是唯一一种无构造方法的类,因为无构造方法,所以使用的范围非常有限。
可以说我在第一遍学习时对内部类概念的理解非常的浅,仅仅是死记flame中的事件监听机制的内部类代码和张老师所讲的枚举中内部类代码,对内部类的分类和各种应用都不是很了解。现在这次复习的确帮我提高了很多。确实学习是量变引起质变的过程,在下部我还得更加用心的将以前不知道和忽略的知识点掌握。
由于昨天晚上网络有问题,所以这篇博客与今天的一并发了。