java之旅之继承
来源:互联网 发布:广州商学院网络拓扑图 编辑:程序博客网 时间:2024/04/28 21:37
继承
继承:在面向对象编程中,可以通过扩展一个已有的类,并继承该类的属性和行为,来创建一个新的类。
类与类之间is a 的关系
父类(基类、超类)–共有属性、共有行为 ←extends子类– 特有属性、特有行为(子类指向父类)
父类所拥有的属性和行为子类自动具备,构造方法不能被继承。且没有重写,只有重载
- 父类设计考虑共同属性和行为,子类考虑特有属性和行为;
- java单继承
- 不写extends,默认继承Object。
在java中所有的继承都是单继承,只有一个父类,只继承一个父类。
继承的优点:
- 代码可重用性
- 父类的属性和方法可用于子类
- 设计应用程序变得更加简单
- 子类可扩展父类的属性和方法
单继承的优点:类层次结构清晰。以后接口会提高单继承的丰富度。
单继承的缺点也就是多继承的优点:丰富度很高。
Object是所有类和数组的根类。
Object类有九个方法,目前先学三个 finalize();toString();equals();。
1、finalize()方法:销毁对象,与构造方法相反,Object方法中的GC调用,面试中经常会问到,这是属于java运行机制的问题。
2、toString()方法:返回一个对象的字符串描述。
例如:
com.lovo.bean.Employee@145c859
其中com.lovo.bean.Employee是全类名,145c859是一个引用(哈希函数加密成唯一的十六进制数),是一个十六进制的数。
当我们打印对象或在对对象做字符串操作的时候,我们这时就是在用toString()方法,而来自Object的toString()方法返回的是Object@16进制数(一个引用),而根据我们自己的需要重写toString()方法。
重写方法如下代码:
public String toString() { // TODO Auto-generated method stub return this.name + "住在" + this.address; } public static void main(String[] args) { Employee e1 = new Employee(); e1.setName("zhang3"); e1.setAddress("四川成都一环路北二段5号3-154"); e1.setNumber(10032); System.out.println(e1); }
3、equals()方法:判断两个对象在业务上是否相等。两个对象的内容是否相等。
equals()与==的区别:
==:判定两个引用是否指向同一个对象。判定左、右两边的值是否相等,不能判断两个对象的内容是否相等,不是说引用不能用==比较,而是==比较的是两个对象是否相同,不是两个对象的内容是否相同。
equals()方法是Obejct类的方法,根据我们自己的需要来重写。
例如:
public boolean equals(Object obj) { // TODO Auto-generated method stub Employee e = (Employee)obj; if(this.number == e.getNumber()){ return true; } return false; }public static void main(String[] args) { Employee e1 = new Employee(); e1.setName("zhang3"); e1.setAddress("四川成都一环路北二段5号3-154"); e1.setNumber(10032); Employee e2 = new Employee(); e2.setName("zhang3"); e2.setAddress("四川成都一环路北二段5号3-154"); e2.setNumber(10032); System.out.println(e1.equals(e2));}
方法重写—-从父类继承而来的方法,子类重新实现,只针对于行为(父子关系)。
1、方法名必须保持一致;
2、参数列表必须保持一致;
3、返回类型必须一致;
4、访问修饰符必须大于等于父类;
5、子类重写后的方法不能抛出比父类重写前的方法更多的异常(下册第一章讨论)
父类所拥有的属性和行为子类自动具备,构造方法不能被继承。且没有重写,只有重载。
重写与重载的区别:
重写:子类重写实现一次继承来的分类的方法。
重载:同一类中有不同参数列表、各有各的实现的多个同名方法。
this与super。用一张图片来解释。
继承中的内存实行内存叠加机制
如:
- java之旅之继承
- java继承之变量
- java继承之方法
- java学习之继承
- java学习之--继承
- java基础知识之继承
- java学习之继承
- Java基础之继承
- Java学习之继承
- JAVA基础之继承
- Java之继承
- java 之 继承
- Java之继承
- java继承之权限
- java之继承
- Java学习之继承
- JAVA基础之继承
- java基础之继承
- Java邮箱手机正则表达式
- cordova-plugin-datepicker 添加只选择年月的模式(android)
- 16.3 Python descriptor-property(特性)
- 无题
- Tomcat 6 —— Realm域管理
- java之旅之继承
- Android序列化技术
- [CF14E]Camels
- 使用spring-ws开发webservice
- 网络——WebView
- [2016/12/5]判断一个int类型数是不是2的幂
- ARM汇编编程基础(一) -- ARM CPU寄存器
- 服务器多路复用 eg
- CSS Grid布局:合并单元格布局