来自一个前端的学生对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。

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

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值