目录
1.继承概述
在继承中我们可以把类分为两种一种是父类一种是子类,子类在继承父类后会获得父类中的属性和方法,在父类中定义过的属性和方法,子类中不需要再写一遍,同时子类还可以额外追加属性和方法。
2.继承的格式
1、Java中提供了一个关键字extends,用这个关键字,我们就可以让一个类和另一个类建立起继承关系
public class Student extends Person{}
2、student称为子类,person称为父类
3.继承的好处
1、有了继承后我们可以把多个子类中重复的代码抽取到父类中,提高代码的复用性
2、子类可以在父类的基础上,增加额外的功能,使子类的功能更强大
3.1继承的使用时机
通过上面的好处我们知道了我们可以在多个子类中存在重复的代码时使用继承,这也意味着我们不能盲目使用继承,子类和父类之间一定要存在着相同的共性,并且满足子类是父类的一种,这时候我们就可以使用继承来优化代码
3.2注意
Java是单继承,一个子类只能有一个父类,不能同时继承多个父类,但一个父类可以有多个子类。java允许多层继承,一个子类的父类还可以有父类,也就是子类可以有爷爷类。
public class Person{
String name;
int age;
public void talk(){}
}
public class Student extends Person{
public void study(){}
}
public class Teacher extends Person{
public void teach(){}
}
1、上述代码中学生类和老师类继承了人类,学生和老师都属于是人,并且每个人都有年龄、名字和会说话的行为,所以我们可以考虑把这些人共有的属性和行为抽取到父类中。
2、而学习是只属于学生的行为,教是老师自己的行为,并不是每个人都会学习和教别人所以这两个方法不能抽取到父类中,我们可以理解为这俩个方法是对父类功能的扩展,是只属于子类的功能。
4. 继承中变量的访问特点
当我们用子类中的方法访问一个变量时会优先在子类局部范围找,如果没有就在子类成员范围找,最后在父类成员范围找。
public class Fu {
public int age = 10;
}
public class Zi extends Fu {
int age = 20;
public void show() {
int age = 30;
System.out.println(age);
}
}
public class Test {
public static void main(String[] args) {
Zi z = new Zi();
z.show();
}
}
上述代码的结果为30
public class Fu {
public int age = 10;
}
public class Zi extends Fu {
int age = 20;
public void show() {
System.out.println(age);
}
}
public class Test {
public static void main(String[] args) {
Zi z = new Zi();
z.show();
}
}
上述代码的结果为20
public class Fu {
public int age = 10;
}
public class Zi extends Fu {
public void show() {
System.out.println(age);
}
}
public class Test {
public static void main(String[] args) {
Zi z = new Zi();
z.show();
}
}
上述代码的结果为10
5.总结
1、什么是继承,继承的好处?
继承是面向对象的三大特征之一,可以让类和类之间产生父子的关系
可以把多个子类中重复的代码抽取到父类中,子类可以直接使用,提高代码的复用性
2、继承后子类的特点?
子类可以得到父类的属性和行为,在子类中不用编写代码可以直接使用
子类可以在父类的基础上增加新的功能,使子类的功能更强大