Java面向对象—多态
概述:同一个事物,在不同的时刻表现出不同的状态。
代码中如何体现:
要有继承, 要有方法重写, 父类引用指向子类对象
多态的成员访问特点
成员变量:编译看左边(父类), 运行看左边
成员方法:编译看左边,运行看右边(子类)对象(注意:这就是多态的精华)---父类引用指向子类对象,在执行的过程中执行子类重写的方法
构造方法:子类不能继承构造方法,默认访问父类空参构造
静态方法:编译看左边,运行看左边
package cn.czbk.no5;
import java.util.Scanner;
public class PolyTest {
public void polyUse(DBConn dbtype){
dbtype.conn();
/**
* 向上类型转换后父类引用就不能使用子类特有的功能
* 通过向下类型转换(强制类型转换)可以解决这个问题
*/
OracleConn oracle =(OracleConn)dbtype;
oracle.oraclePrint();
}
public static void main(String[] args) {
DBConn dbtype = null;
PolyTest pt=new PolyTest();
//在用户输入之前你并不知道要调用哪一个数据库连接
//在程序执行之后用户输入完毕之后才能确认
Scanner sc =new Scanner(System.in);
String dbName=sc.nextLine();
switch (dbName)
{
case "Oracle":
dbtype=new OracleConn();
break;
case "DB2":
dbtype=new DB2Conn();
break;
case "Mysql":
dbtype=new MysqlConn();
break;
default:
System.out.println("end");
break;
}
//多态的使用可以减少代码的编写,直接下面一句话就可以了
//提高代码的扩展性,要加其他类型的数据库的话直接在下面加就可以了上面的并不需要改
pt.polyUse(dbtype);
}
}
class DBConn{
public void conn(){
System.out.println("连接数据库");
}
}
class OracleConn extends DBConn{
public void conn(){
System.out.println("连接Oracle数据库");
}
public void oraclePrint(){
System.out.println("%like%");
}
}
class DB2Conn extends DBConn{
public void conn(){
System.out.println("连接DB2数据库");
}
}
class MysqlConn extends DBConn{
public void conn(){
System.out.println("连接Mysql数据库");
}
}
多态的好处: 提高代码的扩展性;
如何使用多态?
1.写一个父类
2. 写一个或多个子类, 重写父类的方法
3.写一个使用类,在使用类中写一个方法,方法的参数类型定义为父类类型.
4.调用使用类的方法,传入不同的子类对象
多态的弊端: 不能调用子类特有功能.
如何解决: 向下转型(强制转换):
向上转型和向下转型 向上转型:
1. Animal a = new Cat();
2. Cat c = new Cat(); Animal a2 = c; 向下转型(强制转换): Cat c2 = (Cat)a;
注意:java.lang.ClassCastException,异常经常在向下转型中出现,不能指鹿为马.
Java面向对象—多态的更多相关文章
- Java面向对象多态
Java面向对象多态 7.2对象 7.2.1创建对象 对象是类的实例 类的名称 对象名称 = new 类的名称(); 7.3继承 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域 ...
- JAVA面向对象-多态的理解
面向对象编程有三个特征,即封装.继承和多态. 封装隐藏了类的内部实现机制,从而可以在不影响使用者的前提下改变类的内部结构,同时保护了数据. 继承是为了重用父类代码,同时为实现多态性作准备.那么什么是多 ...
- Java面向对象-------多态总结
1.多态:是同一个行为具有多个不同表现形式或形态的能力. 多态就是同一个接口,使用不同的实例而执行不同操作,如图所示: 多态性是对象多种表现形式的体现. 2.多态作用: 1. 消除类型之间的耦合关系 ...
- java 面向对象 — 多态
注意:如果用父类引用指向子类对象的时候.不可以调用,子类中有但是父类中没有的方法. 抽象 方法没有具体方法,以分号结束.例:public abstract void call(); 1.接口必须要有a ...
- JAVA面向对象-----多态
多态的概述 1:什么是多态 一个对象的多种状态 (老师)(员工)(儿子) 教师 a =老钟; 员工 b= 老钟; 2:多态体现 1:Father类 1:非静态成员变量x 2:静态成员变量y 3:非静态 ...
- Java面向对象----多态概念,对象上下转型
概念:同一操作作用于某一类对象,可以有不同的解释,产生不同的执行结果 多态存在的三个必要条件 需要存在继承和实现关系 同样的 方法调用而执行不同操作,运行不同的代码(重写操作) 在运行时父类或者接口的 ...
- Java面向对象的多态
Java中多态的概念是面向对象中除封装和继承外非常重要的知识点,也是Java面向对象三大特性最后一个特性 多态其实就是指对象存在的多种形态,多态分为引用多态和方法多态 引用多态的含义就是:父类的引用可 ...
- JAVA 面向对象中的多态
多态是继封装.继承之后,面向对象的第三大特性. 现实事物经常会体现出多种形态,如学生,学生是人的一种,则一个具体的同学张三既是学生也是人,即出现两种形态. Java作为面向对象的语言,同样可以描述一个 ...
- 3.java面向对象编程三大特性之多态
面向对象编程的三大特性:封装.继承.多态 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对类的外部而言它的内部实现细节是隐藏的,暴露给外界的只是它的实现方法. ...
随机推荐
- QT creator 编辑多个UI 文件 出现 无法解析的外部符号的错误
创建一般的Qt Gui 程序一般会默认一个UI 文件 ,但是随着应用程序窗口的增多,同时编辑多个UI 界面是必须的. 假设我们已经创建好了一个QTUI的工程,里面已经默认了一个UI文件,但是想在添几个 ...
- 第二百二十四节,jQuery EasyUI,ComboGrid(数据表格下拉框)组件
jQuery EasyUI,ComboGrid(数据表格下拉框)组件 学习要点: 1.加载方式 2.属性列表 3.方法列表 本节课重点了解 EasyUI 中 ComboGrid(数据表格下拉框)组件的 ...
- Unity3D入门其实很简单
在上次发布拙作后,有不少童鞋询问本人如何学习Unity3D.本人自知作为一名刚入门的菜鸟,实在没有资格谈论这么高大上的话题,生怕误导了各位.不过思来想去,决定还是写一些自己的经验,如果能给想要入门U3 ...
- ASP.NET Web API 2中的属性路由(Attribute Routing)
如何启用属性路由并描述属性路由的各种选项? Why Attribute Routing? Web API的第一个版本使用基于约定的路由.在这种类型的路由中,您可以定义一个或多个路由模板,这些模板基本上 ...
- Http服务器实现文件上传与下载(一)
一.引言 大家都知道web编程的协议就是http协议,称为超文本传输协议.在J2EE中我们可以很快的实现一个Web工程,但在C++中就不是非常的迅速,原因无非就是底层的socket网络编写需要自己完成 ...
- Mac中pico编辑器的使用方法
Pico是一个由华盛顿大学(University of Washington)计算与通讯研究所(Computing and Communications Group)编写并维护的文本编辑程序,在多个版 ...
- 160707、Tomcat 使用 c3p0连接池
Tomcat 中Jndi是使用Tomcat自带的连接池,由于客户要求,抛弃Tomcat自带的连接池.使用c3p0 .经过几个小时调试,解决方案如下: 环境:Tomcat 6 下面来看Jndi 与 c3 ...
- 【IDEA】IDEA使用教程+技巧
一.Intellij IDEA 中文教程 · GitBook https://legacy.gitbook.com/book/dancon/intellij-idea/details 注:一般来说参考 ...
- sqlserver----记录转载(行转列)、列转行、pivot、unpivot
CREATE TABLE [StudentScores] ( ), --学生姓名 ), --科目 [Score] FLOAT, --成绩 ) 如果我想知道每位学生的每科成绩,而且每个学生的全部成绩排成 ...
- 视频流协议HLS与RTMP 直播原理 点播原理
小结: 1.HLS原理 视频--->图像.声音分别编码打包切割容器文件ts,建立纯文本索引文件.m3u8--->播放器http下载容器文件.索引文件,播放,下载 基于HLS可以实现直播和点 ...