前两个月写了一篇文章多态,,,,却忘记了继承,以下简要概括什么是继承,
1、 什么是继承?
子类继承父类的特征和行为,使得子类具有父类的各种属性和方法。或子类从父类继承方法,使得子类具有父类相同的行为。
2、 为什么需要继承?什么时候应该继承?
使用继承可以有效实现代码复用,避免重复代码的出现。
当两个类具有相同的特征(属性)和行为(方法)时,可以将相同的部分抽取出来放到一个类中作为父类,其它两个类继承这个父类。
继承实现了面向对象的原则
3、 如何实现继承?
在java语言中,用extends(扩展)关键字来表示一个类继承了另一个类。
在父类中只定义一些通用的属性和方法。
注意只能继承一个父类
子类自动继承父类的属性和方法,子类中可以定义特定的属性和方法。或子类重新定义父类的属性、重写父类的方法可以获得与父类不同的功能。
1 继承只支持单继承
2 多个类可以继承一个父类
3 可以实现多层继承 A extends B extends C
4、 什么是方法重写?(注意方法重写和方法重载区别)
如果在子类中定义的一个方法,其名称、返回类型及参数列表正好与父类中某个方法的名称、返回类型及参数列表相匹配,那么可以说,子类的方法重写了父类的方法。
方法重写在不同类,是实现多态的必要条件。
方法重载是在一个类中,其名称、返回类型及参数列表,一定要与同名的不相同,才能达到重载目的
5、 super关键字的用法和位置,super关键字调用父类的构造方法,super关键字调用父类的方法?
1.在子类的构造方法中,通过super关键字调用父类的构造方法。
2.如果子类中重写了父类的方法,可以通过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;
}
@Override
public 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关键字,那