JAVA学习总结四
来源:互联网 发布:打印mybatis sql 编辑:程序博客网 时间:2024/06/16 20:03
本总结接上篇,对JAVA知识总结如下:
第九章 多态与抽象(续)
- 多态技术基础
- 向上转型技术:一个父类的引用可以指向不同的子类对象,或者说一个子类对象可以被当做一个父类类型。
- instanceof关键字:用于判断运行时对象的真正类型。
- 动态绑定技术:运行时根据父类引用变量所指对象的实际类型执行相应的子类方法,从而实现多态性。
注:1.object可以引用各种对象和基本数据;
2.引用指向对象的强转风险为可能完全转不过去(编译成功运行失败)
- 多态的主要应用
- 多态参数:当方法的某个形式参数是一个引用的时候,与该引用兼容的任何对象都可以传递给方法,从而允许方法接受不同数据类型的形式参数。
- 异构集合:创建一个不是同一类型,但是有共同父类的数据集合。不同对象的集合称为异构集合。
- 抽象
- 关键字:Abstract(抽象)可以修饰类、方法
- 如果将一个类设置为abstract,则此类必须被继承使用。此类不可生成对象,必须被继承使用。
- Abstract可以将子类的共性最大限度的抽取出来,放在父类中,以提高程序的简洁性。
- Abstract虽然不能生成对象,但是可以声明,作为编译时类型,但不能作为运行时类型。
注:Final和abstract永远不会同时出现。 - 当abstract用于修饰方法时,此时该方法为抽象方法,此时方法不需要实现,实现留给子类覆盖,子类覆盖该方法之后方法才能够生效。
- 关键字:Abstract(抽象)可以修饰类、方法
注意比较:
private void print(){};此语句表示方法的空实现。
Abstract void print(); 此语句表示方法的抽象,无实现。
总结:1. 如果一个类中有一个抽象方法,那么这个类一定为一个抽象类。反之,如果一个类为抽象类,那么其中可能有非抽象的方法。
2.如果让一个非抽象类继承一个含抽象方法的抽象类,则编译时会发生错误。因为当一个非抽象类继承一个抽象方法的时候,本着只有一个类中有一个抽象方法,那么这个类必须为抽象类的原则。这个类必须为抽象类,这与此类为非抽象冲突,所以报错。
3.子类的方法必须覆盖父类的抽象方法。方法才能够起作用。
为了实现多态,那么父类必须有定义。而父类并不实现,留给子类去实现。此时可将父类定义成abstract类。如果没有定义抽象的父类,那么编译会出现错误。
Abstract和static不能放在一起,否则便会出现错误。(这是因为static不可被覆盖,而abstract为了生效必须被覆盖。)
例:
public class TestClass{
public static void main(String[] args){
SuperClass sc=new SubClass();
Sc.print();
}
Abstract class SuperClass{
Abstract void print();}
}
class SubClass extends SuperClass(){
void print(){
System.out.println(“print”);}
}
第十章 接口
- JAVA的核心概念:接口(interface)
- 开闭原则:源代码不改,只增加新代码。(原意:一个好的设计对扩展来说是开放的,对修改来说是关闭的。)
- 接口与类属于同一层次,实际上,接口是一种特殊的抽象类。
如:
interface IA{
}
public interface:公开接口 与类相似,一个文件只能有一个public接口,且与文件名相同。
在一个文件中不可同时定义一个public接口和一个public类。一个接口中,所有方法为公开、抽象方法;所有的属性都是公开、静态、常量。
一个类实现一个接口的格式:
class IAImple implements IA{
};一个类实现接口,相当于它继承一个抽象类。
注:类必须实现接口中的方法,否则其为一抽象类。实现中接口和类相同。
- 接口中可不写public,但在子类中实现接口的过程中public不可省。
(如果剩去public则在编译的时候提示出错:对象无法从接口中实现方法。)
注:
① 一个类除继承另外一个类,还可以实现接口;
class IAImpl extends java.util.Arrylist implement IA{}
继承类 实现接口
这样可以实现变相的多继承。
② 一个类只能继承另外一个类,但是它可以继承多个接口,中间用“,”隔开。
Implements IA,IB
所谓实现一个接口,就是指实现接口中的方法。
③ 接口和接口之间可以定义继承关系,并且接口之间允许实现多继承。
例:interface IC extends IA,IB{};
接口也可以用于定义对象
IA I=new IAImpl();
9. 实现的类从父类和接口继承的都可做运行时类型。
IAImple extends A implement IA,IB
IB I=new IAImple();
I instance of IAImple;
I instance of A;
I instance of IA;
I instance of IB;
返回的结果均为true.
接口和多态都为JAVA技术的核心。
接口实际上是定义一个规范、标准。
① 通过接口可以实现不同层次、不同体系对象的共同属性;
通过接口实现write once as anywhere.
以JAVA数据库连接为例子:JDBC制定标准;数据厂商实现标准;用户使用标准。
接口通常用来屏蔽底层的差异。
②接口也因为上述原因被用来保持架构的稳定性。
未完待续
- JAVA学习总结四
- java学习总结(四)
- JAVA学习笔记总结(四):数组(Array)
- Java笔记学习总结(四)
- Java反射学习总结(四)
- Java学习总结第三十五天Java笔试题(四)
- 暑假学习总结四
- 操作系统学习总结四
- LitePal学习总结 (四)
- SpringMVC学习总结(四)
- 学习总结(四)
- ELCImagePicker 学习总结(四)
- MKMapView 学习总结(四)
- Mongodb学习总结《四》
- git学习总结(四)
- CocoaLumberjack 学习总结(四)
- spring学习总结(四)
- servlet学习总结四
- 基类型和引用类型的比较
- 2016.5.2
- Python 程序设计语言 笔记(八)
- APK动态加载框架(DL)解析(一)
- Android拼图游戏的设计逻辑,从切图到交互动画,从关卡到倒计时,实例提高!
- JAVA学习总结四
- myeclipse项目里有红色感叹号解决方案
- Android apk动态加载机制的研究(二)
- 顺序容器vector的整理
- leetcode 338
- 子线程更新UI不报错
- 《Motion Design for iOS》(七)
- HDU 1882 Strange Billboard 状态压缩+简单位运算+枚举~
- Android中蓝牙的基本使用----BluetoothAdapter类简介