【黑马程序员】内部类学习
来源:互联网 发布:注册短信验证php 编辑:程序博客网 时间:2024/06/05 15:01
------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ---
class A{
public static class B{}public class C{ private class D{} }
public fun(int){ class E{} }
}
1.顶层类A必须是public或frendly.成员内部类可以是各种访问级别。
实例内部类C,D和静态内部类B。
(1)实例内部类:
a。实例内部类创建前必须先创建外部类,
A a=new A();
A.C c=a.new C;
b。实例内部类自动用友外部类实例的应用,可以访问外部类的所有成员。多重嵌套中可以访问所有外部类。
c。外部类只能访问内部类实例。
d。实例内部类中不能定义静态成员
e。如果AB有同名成员。在B内:this.v表示B的成员,
A.this.v表示A的成员
(2)静态内部类:
a。A.B=new A.B();
b.作为内部成员可以访问外部类的私有静态成员。(顶层类的
公有静态成员本来就是所有类都能访问的)除此之外B就和普
通的类一样。A对于B来说和包名差不多。
(3)局部内部类:在方法中
a。局部内部不能用任何访问控制符修饰,不能包含静态成员2
2.内部类的继承:
(1)若一个外部类F继承了另一个外部类A的内部类C
public class F extends A.C{...}
F中必须要有一个接受外部类对象的构造函数。
public F(A a){a.super();...}(编译器会检查)
创建F: F f=new F(new A);
(2)在外部类外创建实例内部类的对象时,
A.C c=new A(...).new C(...)
3.匿名类
A a=new A(v){....};
等价于:SubA extends A{ .....};
A a=new SubA(v);
Sub类定义在语句中,是局部类,所以不能有静态化初始代码块。
(1)匿名类本身没有构造方法,但是会调用父类的构造方法
。如果v是局部变量,并且会在匿名类中用到,必须是final
A a=new A(v){{....} //匿名类实例初始化代码,相当于匿名构造函数,//会在父类构造函数之后被调用。int xxx;void fun(xxx){}; //匿名类成员}类体中的代码块可以有无数块,都是在创建对象时执行,在构
造函数之前,代码块之间执行的顺序取决去他们在类体内的顺序。
(2)匿名类除了继承类之外,还可以实现接口
4.类中可以定义接口
接口只能可以定义静态内部类
(1)回调:客户类通过一个外部类的内部类来获得外部类的
功能。用于:当外部类想要实现的接口与自身成员相冲突时。
总结:某个区域内的代码的对某类的访问权关键看能否唯一确
定这个类,不会有歧义
------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ---
0 0
- 黑马程序员--学习--内部类
- 【黑马程序员】内部类学习
- 黑马程序员---内部类的学习
- 黑马程序员:内部类学习视频
- 黑马程序员_Java内部类学习笔记
- 黑马程序员---内部类
- 黑马程序员-内部类
- 黑马程序员-内部类
- 黑马程序员-内部类
- 黑马程序员-内部类
- 黑马程序员-内部类
- 黑马程序员--内部类
- 黑马程序员--内部类
- 黑马程序员--内部类
- <<内部类>>--黑马程序员
- 黑马程序员--内部类
- 黑马程序员-内部类
- 黑马程序员--内部类
- [LeetCode124]Word Search
- AMBA总线介绍
- Longest Common Prefix -最长公共前缀
- Java图片缩放类
- 五种界面布局
- 【黑马程序员】内部类学习
- NYOJ69数的长度
- C++课程设计--路口交通灯
- 留着以后看的书~
- Mybatis基本使用(一)
- android之ScrollView里嵌套ListView
- 两个单链表的交叉结点
- 黑马程序员--银行调度系统
- 对SNL语言的解释器实现尾递归优化