JAVA高级面向对象二:认识多态 多态的好处

news/发布时间2024/4/29 21:13:58

1.多态:在继承/实现情况下的一种现象,表现为对象多态(儿子,学生),行为多态(跑的快慢)

方法编译看左边,运行看右边   

变量编译看左边,运行看左边

 

package com.itheima.多态;

public class Test {
//对象多态,行为多态
public static void main(String[] args) {
//1.对象多态
People p1=new Teacher();
p1.run();//行为多态 识别技巧:编译看左边,运行看右边
System.out.println(p1.name);
People p2=new Student();
p2.run();
System.out.println(p2.name);
}

}

class People{
public String name="父类People的名称";
public void run(){
System.out.println("人可以跑");
}

}
class Student extends People{
public String name="子类Student的名称";

@Override
public void run(){
System.out.println("跑的块");
}
}
class Teacher extends People{
public String name="子类Teacher的名称";

@Override
public void run(){
System.out.println("跑的气喘吁吁");
}
}


 

 

 

 

 

2.多态的好处:

 

 

 

package com.itheima.多态;public class Test {//多态好处public static void main(String[] args) {//好处1:实现解耦合,右边对象可以随时切换,后续业务随即改变People p1=new Teacher();p1.run();//好处2:可以使用父类类型的变量作为形参,可以接受一切子类对象Student student=new Student();Teacher teacher=new Teacher();go(student);go(teacher);//p1.teach();//报错,因为编译看左边,父类没有所以报错了
    }//好处2:可以使用父类类型的变量作为形参,可以接受一切子类对象public static void go(People p){}}class People{public String name="父类People的名称";public void run(){System.out.println("人可以跑");}}
class Student extends People{public String name="子类Student的名称";public void test(){System.out.println("考试");}@Overridepublic void run(){System.out.println("跑的块");}
}
class Teacher extends People{public String name="子类Teacher的名称";public void teach(){System.out.println("教书");}@Overridepublic void run(){System.out.println("跑的气喘吁吁");}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ulsteruni.cn/article/34048447.html

如若内容造成侵权/违法违规/事实不符,请联系编程大学网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

前端基础之jQuery引入

一、jQuery介绍 (1)JavaScript库 JavaScript库:即 library,是一个封装好的特定的集合(方法和函数)。从封装一大堆函数的角度理解库,就是在这个库中,封装了很多预先定义好的函数在里面,比如动画animate、hide、show,比如获取元素等。简单理解: 就是一个JS 文件,里面…

多项式习题

P3338 [ZJOI2014] 力 给定数组 \(q\),有: \[E_j=\sum\limits_{i=1}^{j-1}\frac{q_i}{(i-j)^2}-\sum\limits_{i=j+1}^{n}\frac{q_i}{(i-j)^2} \]求数组 \(E\)。 首先把数组从 \(0\) 开始编号。 然后如果有数组 \(g_i=\dfrac{1}{i^2}\),\(g_0=1\),我们发现: \(E\) 的前半部分…

济南泰山攻略

济南 济南攻略 两天泰山 两三天第一天下午

vim编辑器无法鼠标右键粘贴,显示可视

vim /usr/share/vim/vim82/defaults.vim 将set mouse改为r,保存退出即可

LeetCodeHot100 堆 215. 数组中的第K个最大元素 347. 前 K 个高频元素

215. 数组中的第K个最大元素 https://leetcode.cn/problems/kth-largest-element-in-an-array/description/?envType=study-plan-v2&envId=top-100-likedpublic int findKthLargest(int[] nums, int k) {PriorityQueue<Integer> queue = new PriorityQueue<>(…

数据结构(九)模拟堆---以题为例

堆排序维护一个集合,初始时集合为空,支持如下几种操作:I x,插入一个数 x; PM,输出当前集合中的最小值; DM,删除当前集合中的最小值(数据保证此时的最小值唯一); D k,删除第 k 个插入的数; C k x,修改第 k 个插入的数,将其变为 x;现在要进行 N 次操作,对于所有…