来自一个前端的学生对JAVA多态的笔记
来自一个前端的学生对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。
我是一个小白,如果有错误,希望大牛们可以给我指出,谢谢。
- java笔记--day09--关于多态的两个案例(猫狗和老师学生)
- 一个新手的JAVA学习笔记(0)
- 写了一个Java读取XML文件的工具类,做一下笔记!
- 前端攻城狮学习笔记一:实现一个遍历数组或对象里所有成员的迭代器
- 温习Java笔记(5):构造函数、继承和多态
- 一个计算机专业学生几年的Java编程经验汇总
- Java多态的一个简单入门的例子
- Java学习笔记——类与对象(封装、继承与多态)
- [学习笔记]Java代码构建一个线程池的自己学习写的实例,用这个你会更好的理解文章内容
- 一个计算机专业学生几年的Java编程经验汇总
- 一个计算机专业学生几年的Java编程经验汇总(转)
- Java 基础一些代码练习笔记(多态1)
- 前端攻城狮学习笔记三:实现一个URI解析方法,把url里#之后的参数解析成指定的数据结构。
- 《黑马程序员》java笔记->【03】关于多态
- 一个计算机专业学生几年的编程经验汇总 (该系列一共 11 篇,看完之后,java 基础绝对有不小的提升!)
- java编程思想笔记--多态部分一
- java学习笔记 ——5月17日(一个集合类问题)
- 一个计算机专业学生几年的Java编程经验汇总
- 一个计算机专业学生几年的Java编程经验汇总
- 学习Java.对于继承和多态的随堂笔记