本文主要是介绍Object Oriented Programming(2),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
- 写在前面
- 继承
- 基本概念:
- 多态:
- final类与方法
- 抽象类
- Object类——所有类的父类
- 包装器与自动打包拆包
- 变参方法
- Java注释
- 块注释
- 方法注释
- 通用注释
写在前面
续更(1-类与对象),本篇为继承与多态,附一点javadoc注释内容,就剩3-接口啦!
继承
基本概念:
- 父类:又称超类、基类
- 子类:又称派生类
- 继承了父类所有的属性与方法
- 重写(@Override) 子类重写父类方法
- super关键字调用父类,调用构造器必须是构造器第一句。在构造过程中,子类将调用父类没有参数的构造器,若父类没有,且子类不调用父类其他构造器,编译器报错
- 多态:一个对象变量可以指示多种实际类型的现象称为多态。而在运行时能自动选择调用哪个对象的方法的现象称为动态绑定。
- java不支持多继承,实现多继承的方法是接口
多态:
- 原因大概是向上造型是合法的。
- 动态绑定的调用过程:
- 编译器查看声明类型与方法名
- 重载解析
- 若有static、final、private关键字或构造器已经知道调用哪个方法,该过程称为静态绑定。
- 否则程序运行时进行动态绑定:java虚拟机为每个类创建方法表,运行时从实际类型开始找,而后调用方法
final类与方法
- final类阻止继承,final方法阻止@Override。
抽象类
- abstract 方法与abstract类:例如Person中有getDescription方法
- 抽象类中可以有具体属性与方法,Person具有name属性
- 抽象类不可以被实例化!!!
Object类——所有类的父类
- java中,只有基本类型不是对象,其他都是object类的子类
- 几个重要的方法:
- equals():通常需要Override,相等应具有对称性、自反性、传递性、一致性等。getClass与instanceof检测。Object中的equals是指引用相等。
- hashCode():Object对象中的方法是存储地址。相等的对象必须有相等的hash值,所以equals被重写一般也要重写hashCode。
- toString():Object对象中的方法是类名+[属性]。只要打印对象的地方都会自动调用toString方法,所以常常需要Override。
包装器与自动打包拆包
- Integer、Float、Double、Boolean等,包装器是不可变的,且是final
- Autoboxing:
ArrayList<Integer> list = new ArrayList<Integer>();list.add(3); //等价于 list.add(Integer.valueof(3));Integer n = 3;n++; //自动拆包
- 包装器是对象,故他们之间的比较通常用equals而不用==。
- 包装器是编译器认可的,而不是虚拟机。
变参方法
- eg:printf:
printf(String fmt,Object... args) //args是obj数组,基本类型将被autobox成对象。
Java注释
块注释
/** BSearchSolution s = new BSearchSolution();* System.out.println(s.searchInsert(new int[] { 1, 3, 5, 6 }, 5));*/ // 快捷键CTRL+SHIFT+/;
方法注释
/** Raise the salary of an employee.* * @param* * @return* * @throws*/
通用注释
@author
@version
@since…
这篇关于Object Oriented Programming(2)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!