java中多态,instanceof关键字

多态:

面向对象三大特征:继承、封装、多态,其中多态指的是有多种形态,可以使代码更加灵活,而非状态。继承或接口是多态的前提,比如一个对象狗是宠物类的实现类对象,而宠物类又继承了动物类,狗同时具有多种形态:宠物,动物等。

public class Multiplestate{public static void main(String[] args){// 1:代码中体现多态性:左边父类引用指向右边子类对象,其多态格式:父类名称 对象名 = new 子类名称();或 接口名称 对象名 = new 实现类名称();Fatherclass multiplestateObj = new Sonclass();//左边父类Fatherclass的引用指向右边子类对象multiplestateObj.method();//子类中的方法执行了// 5:通过子类创建的对象访问父类中的特有方法:multiplestateObj.methodOfFatherClass();//父类中的特有方法执行了,当子类中没有该方法时,会向父类查找该方法System.out.println(multiplestateObj.num);//5,访问成员变量时,如果父类和子类中成员变量同名,在实现类中访问同名的成员变量,创建对象时等号左边是谁,就会访问谁的值}
};
// 2.定义一个父类Fatherclass,并在里面定义一个方法method:
public class Fatherclass{public void method(){System.out.println("父类中的方法执行了");}// 4.定义一个父类特有的方法:methodOfFatherClass:public void methodOfFatherClass(){System.out.println("父类中的特有方法执行了");};int num = 5;
}
// 3:定义一个子类Son,并继承父类Fatherclass,且覆盖重写父类中的方法:
public class Sonclass extends Fatherclass{@Overridepublic void method(){System.out.println("子类中的方法执行了");}int num = 10;
}

对象的向上转型:起始其实就是多态的写法,其格式:父类名称 对象名 = new 子类名称();其含义:右边创建一个子类对象,把它当做父类看待使用。注意:一定是小范围向大范围转型,且是安全的,但是,对象一旦向上转型后,就不能调用子类中特有的方法了,如果想要使用子类中特有的方法,那么就要使用对象的向下转型进行还原;

对象的向下转型:对象的向下转型实际是对象的还原动作,其含义:将父类对象还原成本来的子类对象;其格式:子类名称 对象名 = (子类名称) 父类对象名称;一个父类对象下面可能会有多个子类对象,此时还原的时候不能还原为其它子类对象,否则会报错,一定要还原为原有的子类。

// 1.创建一个抽象父类:FatherClass:
public abstract class FatherClass{public abstract void method();
}
// 2.创建一个子类:SonClass:
public class SonClass extends FatherClass{// 覆盖重写父类中method方法:@Overridepublic void method(){System.out.println("子类中和父类中同名的重写方法执行了");}// 定义一个独有的方法:public void method2(){System.out.println("子类中独有的方法执行了");}
}
// 5.创建另一个子类:SonOtherClass:
public class SonOtherClass extends FatherClass{// 覆盖重写父类中method方法:@Overridepublic void method(){System.out.println("子类中和父类中同名的重写方法执行了");}// 定义一个独有的方法:public void method3(){System.out.println("另一个子类中独有的方法执行了");}
}
// 3.定义一个UseObj类来测试对象的向上转型:
public class UseObj{public static void main(String[] args){// 对象向上转型:FatherClass objup = new SonClass();objup.method();//子类中方法执行了// objup.method2();//报错,对象一旦向上转型后,就不能调用子类中特有的方法了。// 4.向下转型还原:SonClass objdown = (SonClass) objup;objdown.method2();//子类中独有的方法执行了,此时调用子类中独有方法就不会报错了// 6.错误的向下转型(类似数据的强制转换中精度损失):SonOtherClass objerrordown = (SonOtherClass) objup;//正常编译,运行有异常:Exception in thread "main" java.lang.ClassCastException: SonClass cannot be cast to SonOtherClass at UseObj.main(UseObj.java:15)objerrordown.method3();}
}

instanceof关键字:此关键字用来判断一个对象是否属于某类,返回一个布尔值;其格式为:对象 instanceof 类名称;

提示:本文图片等素材来源于网络,若有侵权,请发邮件至邮箱:810665436@qq.com联系笔者删除。
笔者:苦海

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

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

相关文章

python语言的单行注释以井号开头_【学习】Python语言入门

Python是一门具有强类型(即变量类型是强制要求的)、动态性、隐式类型(不需要做变量声明)、大小写敏感(var和VAR代表了不同的变量)以及面向对象(一切皆为对象)等特点的编程语言。 语法 Python中没有强制的语句终止字符,且代码块是通过缩进来指示的。缩进表示一个代码…

python 参数个数 同名函数_Python——函数的参数

函数的参数定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了。对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被封装起来,…

webview的

问题描述我给WEBVIEW加了等待的圆圈,怎么不起作用?布局文件:<?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:orientation"vertical"android:lay…

java中final关键字、权限修饰符、内部类(成员内部类、局部内部类、匿名内部类)

final关键字&#xff1a; final表示最终的不可变的&#xff0c;在java中可以用来修饰类或方法、局部变量、成员变量。 // 1.final关键字修饰类需要放在class关键字前面&#xff0c;表示不可变的类&#xff0c;需要注意&#xff0c;这里表示当前类不能有子类&#xff0c;但是有…

python安装后无法使用_Python在终端通过pip安装好包以后在Pycharm中依然无法使用的问题(三种解决方案)...

在终端通过pip装好包以后&#xff0c;在pycharm中导入包时&#xff0c;依然会报错。新手不知道具体原因是什么&#xff0c;我把我的解决过程发出来&#xff0c;主要原因就是pip把包安装到了“解释器1”&#xff0c;但我们项目使用的是“解释器2”。我们新手怕字多&#xff0c;所…

03-sizeof的用法

1、作用 sizeof运算符是C语言特有的运算符。 用来计算一个变量或者一个常量、一种数据类型在内存中所占的字节数。 2、基本形式 (1) sizeof (变量或常量) (2) sizeof 变量或常量 (3) sizeof(数据类型) (4) 不能是sizeof 数据类型, 即计算数据类型的字节数必须用小括号括起来 实…

java中类作为成员变量类型使用、接口作为成员变量类型使用、接口作为方法的参数或返回值使用

类作为成员变量类型使用&#xff1a; 自定义的类也可以作为成员变量使用&#xff0c;如&#xff1a; // 1.创建一个电脑角色的类&#xff1a; public class Computer{private String computername;//定义电脑名称&#xff0c;String类型底层实际就是一个类&#xff0c;是java…

python django restful框架_python+django+rest框架配置创建方法

安装好所需要的插件和包&#xff1a;python、django、pip等版本如下&#xff1a;采用Django REST框架3.01、在python文件夹下D:\python\Lib\site-packages\django\bin打开cmd命令工具,本人将python文件夹名字改为了wwj,请注意:mkdir tutorialcd tutorialvirtualenv envsource e…

a标签获取input值_HTML5常用标签

一.HTML文档标签<!DOCTYPE>: 定义文档类型.<html>: 定义HTML文档.<head>: 定义文档的头部.(头部内包含)(1). <meta>: 定义元素可提供有关页面的元信息&#xff0c;比如针对搜索引擎和更新频度的描述和关键词. (2). <base>:定义页面上的所有链接规…

【Python3】POP3协议收邮件

初学Python3&#xff0c;做一个email的例子&#xff0c;虽然知道做的很渣渣&#xff0c;还是分享一下吧POP3协议POP3全称Post Official Protocol3&#xff0c;即邮局协议的第三个版本&#xff0c;它规定了怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议&…

发红包案例(RedPacketFrame简介)

发红包案例&#xff1a; 案例目录结构如下&#xff08;red包为第三方包&#xff0c;需要的话可以到网上自行下载或私信我邮箱即可&#xff09;&#xff1a; // 1.这里将借用发红包的框架&#xff1a;RedPacketFrame&#xff08;图形界面化&#xff09;&#xff0c;OpenMode处…

easy connect 获取服务端配置信息失败_如何统计 Mysql 服务器状态信息?

最近在看《高性能的 Mysql》一书&#xff0c;下面是关于如何学习统计 Mysql 服务器状态的学习总结&#xff0c;主要是学习使用 SHOW STATUS&#xff0c;SHOW ENGINE INNODB STATUS&#xff0c;SHOW PROCESSLIST&#xff0c;SHOW PROFILE 四个命令。命令一&#xff1a;SHOW STAT…

共聚焦图片怎么加标尺_科研教程|利用PS给电镜加标尺

一、开篇前言大家好&#xff0c;大飞鸽就是我&#xff0c;我就是大飞鸽。我们拍摄的SEM或者TEM上都会有放大倍数、加速电压、标尺、电镜信号、拍摄时间等信息&#xff0c;然而正常情况下我们需要的只有标尺这个信息。例如下方这个电镜图为SEM图片&#xff0c;图片下方包含了放大…

感觉又学到了不少,在这里写下来,但也有一个问题,不知道是为甚吗?

今天具体学习了如何去访问和修改HTML元素的内容与样式&#xff0c;也就是DOM中的节点 在这里有三种方法&#xff1a; 通过使用 getElementById() 方法通过使用 getElementsByTagName() 方法通过使用 getElementsByClassName() 方法• getElementById()方法&#xff1a;返回带有…

java中Object和Objects类、toString方法和equals方法介绍

Object类&#xff1a; Object类位于java.lang包中&#xff0c;lang包下的类无需导包就可以使用&#xff0c;object是Java语言中的根类&#xff0c;即所有类的父类。Object中描述的所有方法其子类都可以使用。在对象实例化的时候&#xff0c;最终找的父类就是Object。 如果一个…

实现线段切割法_切割晶圆及玻璃产品的现代技术与设备

作者&#xff1a;韩卓申科VS1,2&#xff0c;伊凡诺夫VI3&#xff0c;吕鸿图2,4&#xff0c;纳乌莫夫A S2,4&#xff0c;王薇媛4摘要&#xff1a;由于需以各种非金属半导体材料晶圆制造使用价值低之微电子产品&#xff0c;对其加工高精度及品质改善的要求更为严苛&#xff0c;因…

学python最重要的是_Python学习,要选哪个版本?

纵观各大编程语言在 2017 年的发展情况&#xff0c;我们会发现涌现出诸如 Go、Swift 这类后起之秀&#xff0c;而其中最为耀眼的当属 Python。之所以 Python 如此受捧&#xff0c;不仅仅是人工智能、数字科学领域的兴起&#xff0c;而且与其自身的特性必不可分&#xff0c;正应…

ARX中实现实体的偏移

static AcDbObjectId OffsetEnty(const ACHAR* BlkName,AcDbObjectId entId,double OfsValue,AcDbDatabase *pDbCrtEntity:: pPurDb); //&#xff01;&#xff08;多段线特别处理&#xff09; AcDbObjectId EditEntity::OffsetEnty(const ACHAR* BlkName,AcDbObjectId entId,do…

java中Date类、DateFormat及SimpleDateFormat简介

Date类&#xff1a; Date类表示日期和时间&#xff0c;精确到毫秒&#xff08;千分之一秒&#xff09;位于java.util.Date下。日期是可以计算的&#xff0c;其本质是利用毫秒值进行计算&#xff0c;任何一个时间点都可以转换为毫秒值&#xff0c;毫秒值表示一个瞬间。 时间原…

gettype获取类名_在TypeScript中运行时获取对象的类名

在TypeScript中运行时获取对象的类名是否可以使用typescript在运行时获取对象的类/类型名称&#xff1f;class MyClass{}var instance new MyClass();console.log(instance.????); // Should output "MyClass"Adam Mills asked 2019-04-11T03:14:30Z9个解决方案…