概述
一:什么是继承
继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。
父亲 == 被继承 ==》 儿子
二:为什么需要继承
如下例子:
• 开发教员类,其中教员分为Java教员以及.NET教员,各自的要求如下:
• Java教员
属性:姓名、所属中心
方法:授课(步骤:打开Eclipse、实施理论课授课)、自我介绍
• .NET教员
属性:姓名、所属中心
方法:授课(步骤:打开Visual studio 2005、实施理论课授课)、自我介绍
public class DotNetTeacher {
String name; // 教员姓名
String school; // 所在中心
public DotNetTeacher(String myName,String mySchool) {
name = myName;
school = mySchool;
}
public void giveLession(){
System.out.println("启动 Visual Studio2005");
System.out.println("知识点讲解");
System.out.println("总结提问");
}
public void introduction() {
System.out.println("大家好!我是" + school + "的" + name + ".");
}
}
从上可以看出“代码存在重复,违背了 ‘write once ,only once’ 的原则”
》》所以可以把相同的部分放到一个类里面(基类)----也就是父类,然后让子类继承父类
三、如何使用继承
• 在Java语言中,用extends关键字来表示一个类继承了另一个类,例如:
public class JavaTeacher2 extends Teacher {
//其余代码省略
}
•在父类中只定义一些通用的属性与方法,例如:
public class Teacher {
private String name; // 教员姓名
private String school; // 所在中心
public Teacher(String myName, String mySchool) {
//初始化属性值
}
public void giveLesson() { //授课方法的具体实现 }
public void introduction() { //自我介绍方法的具体实现 }
}
• 子类自动继承父类的属性和方法,子类中可以定义特定的属性和方法
public class Teacher {
private String name; // 教员姓名
private String school;// 所在中心
public Teacher (String myName, String mySchool) {
//初始化属性值
}
public void giveLesson() {
//授课方法的具体实现
}
public void introduction() {
//自我介绍方法的具体实现
}
}
public class JavaTeacher2 extends Teacher {
public JavaTeacher2(String myName, String mySchool) {
super(myName, mySchool);
}
public void giveLesson(){
System.out.println("启动Eclipse");
super.giveLesson();
}
}
如上:父类中的属性和方法可以被子类继承,由于giveLesson()方法与父类的实现有所不同,因此,
重写了该方法。
方法重写:子类和父类的方法具有相同的名称、参数列表、返回类型。
但是值得我们注意的是Teacher类的构造方法是否也被继承了,答案是构造方法是不能被继承的。
在Java 中,所有的Java类都直接或间接地继承了java.lang.Object类。
四:方法覆盖
在子类继承父类的基础上,子类重新定义与父类相同名称的方法,我们把这种在子类中重新定义父类的方法叫做方法的覆盖。
例如,在Student类(父类)定义study()方法,如果JavaStudent类(子类)继承了Student类,按照继承的特点,JavaStudent类已经拥有study()方法,但JavaStudent类的study()方法想拥有不同于Student类中study()方法不同的功能特性,那么JavaStudent类study()方法需要重新定义,我们把这样的重新定义叫做方法的覆盖(或者叫方法的重写)
五:super关键字
this关键字用于表示类的对象自身,而super关键字可以表示父类的引用,也就是说我们使用super关键字在子类中调用父类的方法,在上面的内容我们知道了子类的构造方法是不能被继承的,但可以使用super关键字调用父类构造方法从而简化子类的构造方法的编辑。
六:多态
多态指的是同一个行为具有多个不同表现形式和形态的能力。
例如,在Student类有study()方法,JavaStudent类和WebStudent类同样有study()方法,但他们执行的功能是不一样,这就叫做多态。在Java中实现多态的三个必要条件:
继承:在多态中必须存在有继承的关系的子类与父类;
重写:子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法;
向上转型:在多态中需要将子类的引用付给父类对象,只有这样该引用才能够具备调用父类的方法和子类的方法的能力。
??为什么要使用多态??
使用多态之后,当需要增加新的子类类型时,无需更改总部类,程序的可扩展性及可维护性增强。简单来说,多态是具有表现多种形态的能力的特征,同一个实现接口,使用不同的实例而执行不同操作。
??如何实现多态??
1、子类重写父类的方法
2、编写方法时,使用父类定义的方法
3、运行时,根据实际创建的对象类型动态决定使用哪个方法
————————————————
版权声明:本文为CSDN博主「XiaoChong1998」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_43473154/article/details/101061207
最后
以上就是迷你哈密瓜为你收集整理的继承与多态的全部内容,希望文章能够帮你解决继承与多态所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复