黑马程序员--java--多态和内部类
来源:互联网 发布:java接口与安卓对接 编辑:程序博客网 时间:2024/05/21 18:38
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
1.多态
1.1 多态的概述
定义:某类事物的多种存在形态。体现:(父类引用指向子类对象)父类或者接口的引用指向或者接受自己的子类对象。
作用:多态的存在提高了程序的扩展性和后期可维护性。
前提:
1.需要存在继承或者实现的关系。
2.需要有覆盖的操作。
好处:提高代码的扩展性,前期定义的代码可以使用后期的内容。
弊端:前期定义的内容不能使用后期子类的特有内容。
1.2 多态的应该规则
模式:Animal a = new Cat();多态建立后,对象a自能调用父类中子类复写了的方法,不能调用子类中自定义的方法。
注意:对象a一直都是在操作Cat中的方法,如果需要使用Cat中父类没有的方法,需要向下转型:
Cat c = (Cat)a;
但一个父类对应多个子类时,用于判断c是否为对应子类的对象可用:
a instanceof Cat
如果a是Cat对象,那么返回true,否则返回false。
1.3 多态时成员的特点
成员变量:1.编译时:参考引用型变量所属的类中是否调用的成员变量。有,编译通过,没有,便以失败。
2.运行时:参考引用型变量所属的类中是否调用的成员变量。并运行该所属类中的成员变量。
总结:编译和运行都看等号左边。
成员函数(非静态):
1.编译时:参考引用型变量所属的类中是否调用的成员变量。有,编译通过,没有,便以失败。
2.运行时:参考对象所属的类中看是否有调用的函数。
总结:编译看左边,运行看右边。
静态函数:
1.编译时:参考引用型变量所属的类中是否调用的成员变量。
2.运行时:参考引用型变量所属的类中是否调用的成员变量。
总结:编译和运行都看左边。
总的来说,非静态方法编译看左边,运行看右边。静态方法和成员变量编译和运行都看左边。
2.内部类
2.1 内部类的概述
定义:将一个类定义再另一个类里面,里面的类就称为内部类。设计思考:定义事物时,发现该事物描述中还有事物,温泉这个事物还在访问被描述的事物内容,这时候就要定义内部类。
特点:内部类可以直接访问外部类的成员,包括私有成员。而外部类需要访问内部类成员必须建立内部类对象。
因为内部类持有外部类的引用:外部类.this
2.2 内部类成员的特点:
内部类定义在成员位置上时,其可以被private、static成员修饰符修饰
1.没被static修饰。而在外部其他类中访问内部类中成员时格式为:
外部类.内部类 变量名 = 外部类对象.内部类对象;
变量名.方法();
2.内部类定义在成员位置上时,被static修饰。此时内部类只能访问外部类中静态成员。
而在外部其他类中访问内部类中成员时格式为:
外部类.内部类 变量名 = 外部类对象.内部类;
变量名.方法();
3.内部类定义在成员位置上时,被static修饰,其中的方法也被static修饰。
外部其他类中访问内部类中成员时格式为:
外部内.内部类.方法();
ps:内部类定义在局部时,此时不能被private和static修饰。但还是可以访问外部类的成员。但需要访问其所在函数中的变量时,这个变量必须被final修饰。
2.3 匿名内部类
定义:内部类的简化书写方式。前提:内部类可以继承或实现一个外部类或接口。
格式:new 外部类或接口名(){覆盖其对于方法};(结尾必须有分号)
使用条件:通常使用方法或者接口类型参数,并且该接口中的方法不超过三个,可以将匿名内部了作为参数传递。
0 0
- 黑马程序员--Java学习14--多态和内部类
- 黑马程序员--java--多态和内部类
- 黑马程序员:多态和内部类
- 黑马程序员--java内部类!
- 黑马程序员--java内部类
- 黑马程序员--Java内部类
- 黑马程序员 Java 内部类
- 黑马程序员---java 内部类
- 黑马程序员-Java内部类
- 黑马程序员-java内部类
- 黑马程序员-java内部类
- 黑马程序员----Java 内部类
- 黑马程序员-java内部类
- 黑马程序员--java内部类
- 黑马程序员------Java内部类
- 黑马程序员-----java内部类
- 黑马程序员---java内部类
- 黑马程序员----java内部类
- HDU 1070 - Select the cheapest product
- 玩转Android---2D图形及动画---动画分析(Tween详细分析)
- Python 多线程 multithread
- #111 (div.2) A. Twins
- Leetcode NO.19 Remove Nth Node From End of List
- 黑马程序员--java--多态和内部类
- hdu 多校
- SEL数据类型的简单知识点——和方法有关
- 实现简单HTTP服务器-图片与CGI
- IOS 值得注意的地方
- HDU 1017 A Mathematical Curiosity
- 从ValueType讨论c#的值类型系统
- openlayers3使用总结
- STL学习