Javase中多态polymorphic的简单介绍
-------------多态-----------------
(1)面向对象三大核心思想;
1、封装 2、继承 3、多态
(2)多态定义:父类的引用指向子类的对象。
(3)引用指的是父类声明的一个引用型变量,变量有: 1、成员变量
2、静态变量
3、构造方法的变量
4、普通方法的变量
5、声明就用的变量
(4)变量的声明一般来说需要三步:声明数据类型 声明变量名 赋值
但是严格来讲为两步:声明数据类型 声明变量名
(5)赋值有两种情况:1、父类型声明,赋值一个父类型的引用值
父类型声明,赋值一个子类型的引用值
2、多态
(6)里氏替换原则:能使用父类的地方,一定可以使用子类
(7)多态的概念:
编译阶段,将父类的属性,生成属性列表,编译时绑定
运行阶段,将子类生成一个对象,子类也有自身属性列表,运行时绑定
程序运行时,通过父类的属性去调用子类对象的属性(特指成员方法)
(8)具体调用:运行阶段
1、遍历父类的属性列表
2、遍历子类的属性列表
3、如果子类有相同,就调用子类的,没有就调用父类的
4、如果父类没有所指属性,直接报错,子类中不用去
public class Poly01{
public static void main(String[] args){
Big a = new Big();
a.eat();//输出父类
Big b = new Small();
b.eat();//输出子类
//b.happy();//报错:找不到符号
b.cry();//输出父类
}
} class Big{
public void eat(){
System.out.println( "大的吃小的" );
}
public void cry(){
System.out.println( "大的在哭" );
}
}
class Small extends Big{
public void eat(){
System.out.println( "小的不让大的吃" );
}
public void happy(){
System.out.println( "小的很高兴" );
}
}
class Tiny extends Big{
public void eat(){
System.out.println( "很小的" );
}
}
多态发生的前提:有继承关系的两个类中(或说体系) 多态有两种类型:1、向上转型,这是从数据类型角度,把子类对象当成父类来处理,可看作自动类型转换
2、向下转型,强制类型转换
自动类型转换:1、基本数据类型中,低精度向高精度
2、引用数据类型中,子类向父类
强制类型转换:1、基本数据类型中,高精度向低精度
2、引用数据类型中,子类向父类
public class Poly02{
public static void main(String[] args){
//---------向上转型----------
Big a1 = new Small();
a1.eat();//输出子类
//a1.happy();//找不到符号
//向上转型的缺点:对丢失子类对象中特有的属性 //---------向下转型----------
//向下转型是基于某个类的对象向上转型后,才可向下转型
Small a2 = (Small) a1;
a2.happy();//输出子类
a2.cry();//调用父类
a2.eat();//输出子类 //---------instanceof--------
//运算符:判断当前对象是不是某个类实例化而来的
Big a3 = new Tiny();
a3.eat();
//Small b2 = (Small) a3;
//b2.happy();//编译通过,但是java.lang.ClassCastException错误
if (a3 instanceof Small){
Small b2 = (Small)a3;
}
System.out.println(a3 instanceof Small );
//为了避免java.lang.ClassCastException错误,java引入了instanceof运算符
//instanceof运算符,其运算结果是boolean;
// if( 引用 instanceof 类型名)-->true/false
}
}
以上就是我的理解.欢迎大家指导!
Javase中多态polymorphic的简单介绍的更多相关文章
- 浏览器中 F12 功能的简单介绍
chrome浏览器中 F12 功能的简单介绍 由于F12是前端开发人员的利器,所以我自己也在不断摸索中,查看一些博客和资料后,自己总结了一下来帮助自己理解和记忆,也希望能帮到有需要的小伙伴,嘿嘿! 首 ...
- [转]chrome浏览器中 F12 功能的简单介绍
本文转自:https://www.cnblogs.com/zhuzhubaoya/p/9758648.html chrome浏览器中 F12 功能的简单介绍 由于F12是前端开发人员的利器,所以我自己 ...
- 【F12】chrome浏览器中 F12 功能的简单介绍
chrome浏览器中 F12 功能的简单介绍 由于F12是前端开发人员的利器,所以我自己也在不断摸索中,查看一些博客和资料后,自己总结了一下来帮助自己理解和记忆,也希望能帮到有需要的小伙伴,嘿嘿! 首 ...
- chrome浏览器中 F12 功能的简单介绍
chrome浏览器中 F12 功能的简单介绍 由于F12是前端开发人员的利器,所以我自己也在不断摸索中,查看一些博客和资料后,自己总结了一下来帮助自己理解和记忆,也希望能帮到有需要的小伙伴,嘿嘿! 首 ...
- 个人对Java中多态的一些简单理解
什么是多态 面向对象的三大特性:封装.继承.多态.从一定角度来看,封装和继承几乎都是为多态而准备的.这是我们最后一个概念,也是最重要的知识点. 多态的定义:指允许不同类的对象对同一消息做出响应.即同一 ...
- Java中多态的一些简单理解
什么是多态 .面向对象的三大特性:封装.继承.多态.从一定角度来看,封装和继承几乎都是为多态而准备的.这是我们最后一个概念,也是最重要的知识点. .多态的定义:指允许不同类的对象对同一消息做出响应.即 ...
- Java Web中web.xml文件简单介绍
参考博客: https://www.cnblogs.com/Y-oung/p/8401549.html 1.XML 声明和根元素 <?xml version="1.0" en ...
- 关于如何在其他包中写controller和简单介绍@SpringBootApplication
本文参考博客:https://blog.csdn.net/u013473691/article/details/52353923 关于@Configuration和@Bean参考博客:https:// ...
- 标准C++中的STL容器类简单介绍
SGI -- Silicon Graphics[Computer System] Inc.硅图[计算机系统]公司. STL -- Standard Template Library 标准模板库. ...
随机推荐
- FAQ_浏览器_ChromeDriver报错
Started ChromeDriverport=2437version=23.0.1240.0log=D:\workspace\WebdriverTest\chromedriver.log[0704 ...
- curl post请求
libcurl发送post请求,包括httpheader参数 static size_t getCharCode(void *ptr, size_t size, size_t nmemb, void ...
- 16道嵌入式C语言面试题
预处理器(Preprocessor) 1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 ...
- HDOJ-ACM1008(JAVA)
这道题很简单,主要是要搞清楚题目的意思 以下是JAVA语言实现: import java.util.*; import java.io.*; public class Main{ public sta ...
- 嵌套在母版页中的repeater自动生成控件ID
注:如果直接在后台通过e.Item.FindControl()方法直接找控件,然后再通过对其ID赋值,在编译之后会出现“母版页名称_ID“类似的很长的ID值(详情点击) 解决方法:<asp:Co ...
- ceph-deploy 在下面ceph-nodes执行的命令
1,Running command: env DEBIAN_FRONTEND=noninteractive apt-get -q install --assume-yes ca-certificate ...
- poj1149--PIGS(最大流)
题意: 有m个猪圈 每个猪圈有不同数量的猪 [0, 1000]有n个顾客 每个顾客需要Bi头猪 有Ai个钥匙 能打开Ai个不同的猪圈顾客按顺序来买猪 只能买他有钥匙的猪 买完之后 这几个猪圈的猪可以相 ...
- gridview合并单元格
记录用,以前写过,忘记了转自:http://marss.co.ua/MergingCellsInGridView.aspx public class GridDecorator { public st ...
- 问题-[ACCESS2007]怎么显示MsysObjects
office 2007设置:单击左上角图标 -> Access选项 -> 当前数据库 -> 导航 -> 导航选项 -> 勾选显示隐藏对象,显示系统对象.数据库工具选项卡 ...
- [置顶] 漫谈SOA(面向服务架构)
面向服务架构的思想在整个软件的架构中已经不是什么新鲜的东西.我简单的认为服务化是模块化的延伸,所以服务化有着和模块化类似的优点和缺点.这里不再讨论这些服务定义服务与服务之间的通信协议(像WSDL等等) ...