java中继承
来源:互联网 发布:手机淘宝开店怎么发货 编辑:程序博客网 时间:2024/06/03 20:56
前两个月写了一篇文章多态,,,,却忘记了继承,以下简要概括什么是继承,
1、 什么是继承?
子类继承父类的特征和行为,使得子类具有父类的各种属性和方法。或子类从父类继承方法,使得子类具有父类相同的行为。
2、 为什么需要继承?什么时候应该继承?
使用继承可以有效实现代码复用,避免重复代码的出现。
当两个类具有相同的特征(属性)和行为(方法)时,可以将相同的部分抽取出来放到一个类中作为父类,其它两个类继承这个父类。
继承实现了面向对象的原则
3、 如何实现继承?
在java语言中,用extends(扩展)关键字来表示一个类继承了另一个类。
在父类中只定义一些通用的属性和方法。
注意只能继承一个父类
子类自动继承父类的属性和方法,子类中可以定义特定的属性和方法。或子类重新定义父类的属性、重写父类的方法可以获得与父类不同的功能。
4、 什么是方法重写?(注意方法重写和方法重载区别)
如果在子类中定义的一个方法,其名称、返回类型及参数列表正好与父类中某个方法的名称、返回类型及参数列表相匹配,那么可以说,子类的方法重写了父类的方法。
方法重写在不同类,是实现多态的必要条件。
方法重载是在一个类中,其名称、返回类型及参数列表,一定要与同名的不相同,才能达到重载目的
5、 super关键字的用法和位置,super关键字调用父类的构造方法,super关键字调用父类的方法?
在子类的构造方法中,通过super关键字调用父类的构造方法。
如果子类中重写了父类的方法,可以通过super关键字调用父类的方法
以下举例super如何使用
public class Student {int number; String name; public Student() {// TODO Auto-generated constructor stub}public Student(int number, String name) {super();this.number = number;this.name = name;} @Override public String toString() { // TODO Auto-generated method stub return name+number; } }
public class Teacher extends Student { String salary; public Teacher() {// TODO Auto-generated constructor stub}public Teacher(int number, String name, String salary) {super(number,name);this.salary = salary;} @Overridepublic String toString() {return super.toString()+this.salary;}}
public class Test { public static void main(String[] args) {Student s1=new Student(12,"xiaoming");Teacher t1=new Teacher(22,"张","1000");System.out.println(s1.toString());System.out.println(t1.toString());} }
输出结果为
位置注意:调用父类的构造方法的语句(super语句)必须是构造方法中的第一条语句。
因为创建对象的时候,需要先创建父类对象,再创建子类对象。
注意:创建对象时,先创建父类对象,在创建子类对象。如果没有显示调用父类的构造方法,将自动调用父类的无参构造方法。
构造方法注意不要忘记写无参构造方法,因为如果只定义了有参数的构造方法,无参构造方法无法自动生成
6、 一切类(祖先)Object。
所有类都直接或者间接地继承了java.lang.Object类,Object类中定义了所有的java对象都具有的相同行为,是所有类的祖先。
一个类如果没有使用extends关键字,那