首页 > 编程语言 >多态性#java#面向对象

多态性#java#面向对象

时间:2024-03-10 20:11:24浏览次数:17  
标签:p1 java 面向对象 多态性 void class Person say public

多态性

  1. 静态多态:也称为编译期间的多态,编译器在编译期间完成的,主要通过函数重载实现。编译器根据相同函数名的不同参数列表,可推断出要调用哪个函数。
public class Person {
    public void say(){
        System.out.println("我是第一个名为say的方法!");
    }
    public void say(int n){
        System.out.println("我是第二个名为say的方法!!");
    }
}
//测试
public class Main {
    public static void main(String[] args) {
        Person p1=new Person();
        p1.say();//我是第一个名为say的方法!
        p1.say(4);//我是第二个名为say的方法!    
    }
}
  1. 动态多态(动态绑定):即运行时的多态,在程序执行期间判断所引用对象的实际类型,根据其实际类型调用相应的方法。
//父类
public class Person {
    public void say(){
        System.out.println("我是一个人!");
    }
}
//子类1
public class Student extends Person{
    public void say(){
        System.out.println("我是一名学生!");
    }
}
//子类2
public class Worker extends Person{
    public void say(){
        System.out.println("我是一名工人!");
    }
}
//测试
public class Main {
    public static void main(String[] args) {
        Person p1=new Student();//编译时即静态时系统只知道p1为Person类型,但运行时即动态时系统判断出p1的实际类型为Student,并根据实际类型调用相应的方法
        Person p2=new Worker();//编译时即静态时系统只知道p2为Person类型,但运行时即动态时系统判断出p2的实际类型为Worker,并根据实际类型调用相应的方法
        p1.say();//我是一名学生!
        p2.say();//我是一名工人!
    }
}

标签:p1,java,面向对象,多态性,void,class,Person,say,public
From: https://www.cnblogs.com/yang-xiaojie/p/18064710

相关文章

  • java springboot拦截器的实现及用法
     1.前景,有时候我们在不同的地方需要使用用户的信息,我们可以使用threadLocal存储信息,这样我们在在这个线程随时使用用户信息了,不用自己在写一段冗余代码了,这时候使用拦截器就很不错 2.实现1.实现HandlerInterceptor2.重写实现方法  preHandle:在业务处理器处理请......
  • Java登陆第三十四天——Node.js安装、npm配置、npm命令
    Nodejs是JS的运行环境,使JS可以运行在服务端,可以夸平台,可以运行在浏览器之外,成为一款全栈编程语言。Node.js安装Nodejs官网,进入......
  • 学java15结构
    1.顺序结构java的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行。顺序结构是最简单的算法结构。语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构。2.选择结构if单选择结......
  • 手撕Java多线程(四)线程之间的协作
    线程之间的协作当多个线程可以一起去解决某个问题时,如果某些部分必须在其他部分之前完成,那么就需要对线程进行协调。join()在线程中调用另一个线程的join()方法,会将当前线程挂起,而不是忙等待,直到目标线程结束。对于以下代码,虽然b线程先启动,但是因为在b线程中调用了a线程的join......
  • java.net.UnknownHostException: api.weixin.qq.com解决办法
    java.net.UnknownHostException: api.weixin.qq.comat java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:175)at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:384)at java.net.Socket.connect(Socket.java:546)at sun.security.ssl.SSLSo......
  • 学java14用户交互Scanner
    我们可以通过Scanner类来获取用户的输入基本语法Scanners=newScanner(System.in);通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据。程序实例packageScanner;importjava.util.Scann......
  • 学java13javaDoc生成文档
    找到类的地址,进入类所在文件夹,在导航栏中最前面添加“CMD(空格)”后回车javadoc-encodingUTF-8-charsetUTF-8文件名.java通过idea生成:tools/生成javadoc/第一步:选择生成JavaDoc文档的范围,我只对一个源文件生成Doc,所以选择文件。第二步:输出目录最好新建一个文件......
  • 在Java中,HashMap中是用哪些方法来解决哈希冲突的?
    HashMap中调用hashCode()方法来计算hashCode。由于在Java中两个不同的对象可能有一样的hashCode,所以不同的键可能有一样hashCode,从而导致冲突的产生。采用链地址法解决冲突。HashMap底层是数组+链表+红黑树(JDK1.8)来实现的,根据key的hash值查找对应的位桶。1.当前索引数组为空,则......
  • Java学习笔记——第十一天
    面向对象高级(二)多态多态是在继承/实现情况下的一种现象,表现为:对象多态、行为多态。多态的具体代码体现//使用同一个类名创建了不同类型的对象,体现了对象多态Peoplep1=newStudent();Peoplep2=newTeacher();//不同类型的对象调用了同一个名字的方法,体现了行为多态p1......
  • Java8新特性
    Java8新特性汇总Java8的改进速度更快代码更少(增加了新的语法:Lambda表达式)引入强大的StreamAPl便于并行最大化减少空指针异常:OptionalNashorn引擎,允许在JVM上运行JS应用并行流就是把一个内容分成多个数据块,并用不同的线程分别处理每个数据块的流。相比较串行的流,......