您的位置:首页 > Web前端

来自一个前端的学生对JAVA多态的笔记

2019-01-15 17:42 92 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/zn1121/article/details/86496534

来自一个前端的学生对JAVA多态的笔记

吐槽一下,作为一个学习前端的孩子,发布的第一篇文章是为了期末考试转行几天学习学习Java。希望路过的大牛轻喷。

Java多态就是多种表现形式,具体来说,可以用“一个对外的接口,多个内在实现方法”表示。在面向对象理论中,多态是指:同一操作作用于不同的类的对象,将产生不同的执行效果,增加了程序的灵活性。

多态三大重点:继承、重写、向上转型(父类引用指向派生类)。

继承:就是一个子类继承一个父类,就是extends!!!
重写:就是把父类的方法名重写写一遍,方法体变一变就好了。
向上转型:就是子类引用指向派生类对象,既可以使用派生类的功能,也可以抽取父类的特性。就是定义了一个Person父类,定义一个Teacher子类,格式:Person per = new Teacher();

嗯。。。想看懂多态,首先要先学习继承吧,个人观点
上代码吧:
父类:Person

public class Person {
private String name;
public Person() {
System.out.println("这是无参person类的构造方法");
}
public Person(String name) {
System.out.println("这是有参person类的构造方法"+name);
}
public void display() {
System.out.println("这是person类");
}
}

子类:Teacher

public class Teacher extends Person{
public Teacher() {
System.out.println("这是无参teacher类的构造方法");
}
public Teacher(String name) {
System.out.println("这是有参teacher类的构造方法"+name);
}
public void display() {	//对person类中display方法的重写
System.out.println("这是teacher类");
}
}

子类的子类(孙子类):Student(为了方便理解吧,学生类和老师类应该是平级的。)

public class Student extends Teacher{
public Student() {
System.out.println("这是无参student类的构造方法");
}
public Student(String name) {
System.out.println("这是有参student类的构造方法"+name);
}
public void display() {			//这个也是方法重写吧。。。
System.out.println("这是student类");
}
}

最后写一个测试类:Test

public class Test {
public static void main(String[] args) {
Person p = new Person("per");
p.display();
Person t = new Teacher("tea");
t.display();
Teacher s = new Student("stu");
s.display();
}

}

最后输出结果:

这是有参person类的构造方法per
这是person类
这是无参person类的构造方法
这是有参teacher类的构造方法tea
这是teacher类
这是无参person类的构造方法
这是无参teacher类的构造方法
这是有参student类的构造方法stu
这是student类

解释一下“测试类”:
第一行:首先创建person对象,传参“per”,调用person类有参的构造方法;

第二行:调用Person类中的display方法;

第三行:创建teacher对象,传参“tea”,但是使用父类Person引用,向上转型。所以先输出父类的无参数构造方法,在输出子类的带参的构造方法。

第四行:调用Teacher类的display方法。

第五行:和第三行一样,但是我们Student是子类的子类,所以输出了父类的父类的无参数构造方法,在输出父类无参数的构造方法,在输出子类的带参的构造方法。

第六行:调用Student类的display方法。

为什么子类的对象可以赋给父类引用?
自动实现向上转型,通过Person per = newTeacher();语句,编译器自动将子类的实例转为通用类型Person。

我是一个小白,如果有错误,希望大牛们可以给我指出,谢谢。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: