「多态要素java」简要概述多态的作用java

博主:adminadmin 2023-03-20 20:28:08 207

本篇文章给大家谈谈多态要素java,以及简要概述多态的作用java对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java的多态问题。

抽象是面向对象领域中对类(接口)进行的泛化,如由多个类抽象出一个共同的父类(接口),也可以指由多个对象归纳为一个类。

多态是面对同一种操作(方法),不同的对象执行时具有不同的结果。多态分为静态多态和动态多态,静态多态是在程序预编译期间确定对象与操作(方法)的关系,如方法的重载,动态多态是在程序运行期间确定对象与操作(方法)的关系。

一个静态多态的Java程序如下:

public class Main {

public static void main(String[] args){

System.out.println(strcat("hello,", "world")); //程序预编译期间就能确定调用哪个方法

System.out.println(strcat("hello,", 1)); //程序预编译期间就能确定调用哪个方法

}

public static String strcat(String s1, String s2) {

return s1 + s2;

}

public static String strcat(String s1, int s2) {

return s1 + String.valueOf(s2);

}

public static String strcat(int s1, String s2) {

return String.valueOf(s1) + s2;

}

public static String strcat(int s1, int s2) {

return String.valueOf(s1) + String.valueOf(s2);

}

}

运行结果:

hello,world

hello,1

一个动态多态的Java程序如下:

//接口:表示人类的行为

interface Behavor {

void learn();

}

//子类:学生类

class Student implements Behavor {

//实现父接口的行为

@Override

public void learn() {

System.out.println("学生主要通过上课获得知识");

}

}

//子类:学生类

class Teacher implements Behavor {

//实现父接口的行为

@Override

public void learn() {

System.out.println("教师主要通过自学获得知识");

}

}

public class Main {

public static void main(String[] args){

Behavor b = null;

b = new Student();

b.learn(); //程序运行时才能确定调用哪个子类的方法

b = new Teacher();

b.learn(); //程序运行时才能确定调用哪个子类的方法

}

}

运行结果:

学生主要通过上课获得知识

教师主要通过自学获得知识

java中的多态三要素是什么?

1。Person person = new A(); 不是父类对象指向子类引用而是父类引用指向子类对象

2。这个对象不能调用子类A特有的弹吉他方法--person.guitar(); X

3.如果仅是这么写程序,还不是多态,记住实现多态的三要素:继承 重写 父类引用指向子类对象

那么,你必须在父类里面定义一个方法guitar(); ,然后在子类中重写这个方法

之后,如果你调用persion.guitar(),此时在代码的编译阶段,persion调用的仍然是自己的guitar(),不是儿子的。而当程序运行时,就是java XXX, persion调用的却是儿子的guitar()。这个动态的过程才是多态 。

总之

比如A a = new B();是创建了一个子类对象并把它当成父类对象A用

也就是父类引用指向子类对象

此时,引用变量a有2个类型,编译时的类型为A,运行时的类型为B.在代码编译过程中,a 只能调用属于A的方法. 不能调用B类里面的方法.注意,由于继承关系,如果B重写了A的某个方法,比如说eat(),而在代码编译过程中,a.eat()调用的是A的eat(),但在程序运行时,却运行的是B的eat(). 这就是多态

比如Animal a = new Tiger(); Tiger继承并重写了Animal的eat()方法.这也是父类引用指向子类对象.首先, a 是 一只老虎.但不幸的是,Animal a= new Tiger(); 也就是说a虽然有了老虎的实质, 就是说有了老虎的爪子,身材..... , 但却没有老虎的名分.它虽然身体是老虎, 但名字或者说它的类别却是动物,而不是老虎.而作为动物的定义,你当然不能使用属于老虎的定义的方法.比如说,虽然二者都有吃的行为, 但老虎吃肉,动物都吃肉么? 所以虽然a实质上是老虎,但在书面描述a的行为时,你只能使用动物的定义. 这个阶段就相当于代码的编译的阶段.而此时a的类型为编译时的类型-动物.而如果具体实施吃的行为时, 比如说给a喂吃的, 虽然书面定义了a只能有动物的笼统的吃的方法,比如说用嘴,没有规定要吃肉.但是现在是具体操作了,由于a实质上是老虎,所以a实质上履行的还是老虎的吃的方法. 具体的吃的过程,就相当于程序的运行的阶段. 而此时a的类型为运行时的类型-老虎

java讨论:什么是多态和接口,为什么需要?

多态:有三要素:1.继承 2.重写 3.父类引用指向子类对象,提高了代码的扩展性和维护性,可以这么理解,父类就好比是厨师长,手下一帮厨子就是子类,他们每个人可以炒不同的菜,你只需要告诉厨师长你要吃什么,厨师长就会找到会做这道菜的厨师去给你做。如果有道菜没有人会做,很简单,招个会做的厨师就行了,这就是扩展性,如果有道菜吃出什么问题了,我们换掉那个厨子就行了,不会影响别的菜,这就是维护性。

接口:即面向接口编程,最主要作用是解耦合,如此一来就会产生很多优点,就比如一个小组写面向接口调用,另一个小组写接口方法的实现,两边可以同步进行以提高效率。其次java中不支持多重继承,接口的出现解决了这个问题,可以提高代码的复用率,增加程序的扩展性和可维护性。

java中构成多态的前提是什么?

java中实现多态需要三个条件:

1,需要有继承关系的存在。

2,需要有方法的重写。

3,需要有父类的引用指向子类对象。

java学习推荐你来北京尚学堂,雄厚的师资力量带给你不一样的学习体验,在分享一下java学习的路线,希望对你有所帮助:

一、JavaSE基础阶段

面向对象编程(基础)

面向对象编程(进阶)

异常机制

Java常用类

数据结构和算法

集合(容器)

IO流

多线程

网络编程

集合提升训练

多线程提升训练

二、数据库阶段

MySQL基础

MySQL 查询语句

数据库对象

JDBC

反射和注解

数据库建模和UML建模

设计模式

三、WEB前端

JavaScript

jQuery

BootStrap

Vue

四、JavaEE阶段 (核心阶段)

HTTP/Tomcat

MVC 架构

Servlet

JSP

EL+JSTL+过滤器+监听器

Ajax和JSON

分页和文件上传/下载

五、JavaEE阶段(高级框架)

Spring 5.2.2

SpringMVC 5.2.2

RBAC

EasyUI 1.7.0

支付/短信验证

六、框架强化

Linux - CentOS 8

Maven

Logback

Quartz

Spring Boot 2.2.2

Shiro

Swagger

Git/GitEE

MyBatis

七、分布式架构

Zookeeper

RPC

Dubbo

Redis

Solr

RabbitMQ

FastDFS

Nginx

Spring Security

Spring Session

MyBatis Generator

Mycat

八、微服务阶段

ElasticSearch

MongoDB

Spring Cloud Netflix Eureka

Spring Cloud Netflix Ribbon

Spring Cloud OpenFeign

Spring Cloud Netflix Hystrix

Spring Cloud Config

Spring Cloud Gateway

Docker

K8S

多态要素java的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于简要概述多态的作用java、多态要素java的信息别忘了在本站进行查找喔。