Java多态性实现详解:继承与接口的应用技巧
创始人
2024-12-16 23:35:37
0 次浏览
0 评论
Java运行时多态性的实现
一种是通过继承超类对象引用变量和子类对象引用来实现
//定义超类superA
classsuperA
{
Voidfun()
}
//设置superA的子级。
子类C
类型subCextendssuperA
{
Voidfun()
\classTest
{
publicicstaticvoidmain(String[]args)
ThisissubB
ThisissubC
其次,是通过接口类型变量实现接口的类的对象通过引用实现
//定义InterA
interfaceInterA
{
typeBimplementsInterA
//C类实现接口InterA
classCim.ComponentsInterA
{
Publicvoidfun()
{
classTest
{
Publicstaticvoidmain(String[]args)
ー{
ThisisB
这是C
lishixinzhi/Article/program/Java/hx/201311/26085java类的多态编程。(1)乐器(Instrument)分为:钢琴(Piano)、小提琴(Vio
publicclassInstrument{publicvoidplay(){System.out.println("演奏乐器...");}}
publicclassPianoextendsInstrument{publicvoidplay(){System.out.println("弹钢琴...");}}
publicclassViolinextendsInstrument{publicvoidplay(){System.out.println("拉小提琴...");}}
publicclassTestPlay{publicstaticvoidmain(String[]args){Instrumentpr=newInstrument();per.play();p.play();
java重写和多态有什么关系
Java重载和重写是实现多态性的两种方式。第一个是编译时多态,第二个是运行时多态。
具体代码如下(我引用了一篇CSDN文章,省得自己写,哈哈),b;publicBase(intx,inty){a=x;b=y;}publicintadd(){return(a+b);}publicvoiddd(intx,inty){intz;z=x+y;}}代码上面是重载的~~~他有三个特点:1:方法名必须与“add()”相同。
2:返回类型可以不同,例如“int”和“void”。
3:参数可以不同,如add()和add(intx,inty)。
publicclassBase{intx,y;publicvoidadd(){intz;z=x+y;}}publicclassChildextendsBase{intx,y;publicvoidadd(){intz;z=x+y;}publicstaticvoidmain(string[]args){Baseb=newChild();b.add();}}以下示例是重写的。
实现了多态~~重写的条件是方法名必须相同,返回类型必须相同。
同样的。
传递的参数也应该在main函数中定义父类对象,但是使用子类来实例化它,这样子类的方法就可以通过父类对象来调用。
java的多态怎么实现?
实现多态的三个条件(前提条件、向上转型、向下转型)1、继承的存在(继承是多态的基础,没有继承就没有多态)2、子类覆盖父类的方法。(多态中,会调用子类重写的方法)3、父类的引用变量指向子类的对象。
(包括子类到父类的类型转换)UpcastStudentperson=newStudent()将父类的引用指向子类对象,子类对象变成向上转型,自动进行类型转换。
现在,通过父类的引用变量调用的方法是子类重写或继承自父类的方法,而不是父类的方法。
此时,无法通过引用变量父类来调用子类特有的方法。
沮丧的Studentstu=(学生)人;将子类对象引用赋值给子类引用就变成了向下强制类型转换。
向下转型必须强制转换为父类引用所指向的实际子类类型,否则会出现ClassCastException异常。
这不是任意的强制转换。
在向下转型时,可以使用操作符的实例进行强制类型转换,例如异常转换——ClassCastException。
相关文章
南通Java培训:如何选择机构?大专生如...
2024-12-17 21:51:56Java运行顺畅却遇javac难题?环境...
2024-12-14 18:27:44Java常量定义方法详解:final关键...
2024-12-21 14:47:17JAVA编程中的耦合与解耦:理解模块间的...
2024-12-16 00:32:11Java混淆器RetroGuard使用指...
2024-12-17 06:48:13Java面试必备:全面解析笔试题及答案,...
2024-12-16 17:38:24Java微服务超时处理策略及ZooKee...
2024-12-19 03:08:25SpringBoot入门教程:从零基础到...
2024-12-21 06:27:17Java字符串转数字:常用方法解析及实践...
2024-12-18 09:19:15Python比较字符与数字大小:理解内置...
2024-12-16 05:18:11最新文章
23
2024-12
23
2024-12
23
2024-12
23
2024-12
23
2024-12
23
2024-12
23
2024-12
23
2024-12
23
2024-12
23
2024-12
热门文章
1
SQL多表连接查询全解析:JOIN语句应...
sql多表关联查询在执行SQL多表连接查询时,可以使用JOIN语句将多个表连接在...
2
Java中字符串类型详解:String与...
变量有字符类型,为什么没有字符串类型??基本类型:charshort、int、l...
3
JavaSE与JavaEE:从基础到企业...
javase 和javaee的区别?JavaSE和JavaEE...
4
Java程序员面试必知:核心技术问答与技...
java编程程序员技术面试常见面试?随着互联网的不断发展,Java开发已经成为很...
5
Java.exe与Javaw.exe:区...
程序中java和javaw有什么区别java和javaw的区别:两者都是Java...
6
深入解析:Java中的javax包及其与...
JAVA导入时,什么是javax?awt是java1.0,swing是java2...
7
大专生转行自学Java,迷茫时如何找到方...
我是大专生因没有好好学所以现在后悔了我想从事软件编程我正在自学java不知道怎么...
8
Java中Scanner类导入位置及使用...
在java中这句语言“importjava.util.Scanner;”是什么意...
9
Java数组倒序输出:排序后逆序存储方法...
Java数组倒序输出?1.反转数组的方法有很多种,比如先排序,然后倒序存储pub...
10
C语言改错难题解析:第二处错误详解及修改...
请问这个C语言改错题怎么做呀?我做了很久都没写出来,第二处错误不知道怎么改。那位...