Java运行时多态实现:继承与超类引用详解

创始人
2024-12-17 04:28:00
0 次浏览
0 评论

Java运行时多态性的实现

一种是通过继承超类对象的引用变量和子类对象的引用来实现

//定义超类superA

classsuperA

{

voidfun()

{

}



//定义子类B来自superA

<

<

}

 //选择superA子类subC

<{

<}

}

​章节测试

​{

​发布icstaticvoidmain(String[]args)

{

Aafun()  ()

 afun()  ()

}

​}

​ThisissubB

ThisissubC

二、通过引用类对象来实现其中通过接口类型变量来实现接口

//定义InterA接口

InterA接口

{

}

​//实现InterA接口的B类

classBimplementsInterA

{

publicvoidfun()

{

}



//实现InterA接口的C类

classCimElementsInterA

classTest

{

publicstaticvoidmain(String[]args)

:{

:}

:}

:这是B

:这是C

lishixinzhi/Article/program/java/hx/201311/26085

什么是继承,试说明在java中实现多继承的方法

JAVA中没有多重继承,一个类可以有一个父类。
继承的表现形式就是多态。
一个父类可以有多个子类,并且子类中可以重写父类的方法(如print()方法)。
这样,每个子类中重写的代码就不同,自然表达也不同。
这样就用父类的变量来引用不同的子类。
调用同一个print()方法时,得到的结果和表达式是不同的。
这就是多态性,同一个消息(即调用同一个方法)会有不同的结果。
例如://父类publicclassFather{//父类有命中子类的方法publicvoidhitChild(){}}//子类1publicclassSon1extendsFather{//重写父类命中子类的方法publicvoidhitChild(){System.out.Println("为什么打我?我做错了什么!");}}//子类2publicclassSon2extendsFather{//重写父类方法,打子publicvoidhitChild(){System.out.println("我知道我错了,别打!");}}//子类3publicclassSon3extendsFather{//重写父类打孩子的方法publicvoidhitChild(){System.out.println("我执行,你打不到!");}}//测试类publicclassTest{publicstaticvoidmain(Stringargs[]){Fatherfather;father=newSon1();father.hitChild();father=newSon2();father.hitChild();father=newSon3();father.hitChild();}}都调用同一个方法,却出现不同的结果!这就是多态性!2、JAVA中没有多重继承,但是多重继承是使用接口来实现的!一个类可以同时实现多个接口!(相当于C++中的一个类同时继承多个类!)例如:publicclassSonimplementsFather1,Father2,Father3{}接口鼓励扩展代码功能(添加新功能)!继承鼓励修改代码函数(将旧函数变成新函数)!改变旧功能和增加新功能的前提是旧功能不改变并且旧功能仍然可以使用!旧的类代码不会改变!继承上面的例子:上面例子中的子类统称为第一代子类1.使用继承来修改旧的函数。
现在如果第一代Son1的函数击中了children,即hitChild()方法中的函数实现有问题,需要改变具体实现,那么我们可以重写第二代的新子类Son11继承自第一代子类Son1并重写其hitChild()方法。
//第二代子类publicclassSon11extendsSon1{//重写父类的子方法publicvoidhitChild(){System.out.println("我是第二代子类新实现了这个方法");}}2.使用接口实现添加新功能。
现在Son1类已经有了“打孩子”的功能(即方法),我们有了新的需求。
我们需要它有一个新的“抚摸婴儿”功能(newpet();方法)。
而且旧代码无法移动!然后我们可以定义一个新的接口(PetInterFace),并在接口中定义这个pet()方法的声明。
所以重写一个第二代Son11子类,让它先继承Son1类,同时实现PetInterFace接口!并实现pet()方法在界面中!//新增接口publicinterfacePetInterFace{//新增功能方法publicvoidpet();}//第二代子类publicclassSon11extendsSon1implementsPetInterFace{//实现接口方法publicvoidpet(){System.out.println("爸爸很爱我!");}}这样,这个第二代子类既有旧方法,又有新功能!
文章标签:
Java 继承
热门文章
1
SQL多表连接查询全解析:JOIN语句应... sql多表关联查询在执行SQL多表连接查询时,可以使用JOIN语句将多个表连接在...

2
Java中字符串类型详解:String与... 变量有字符类型,为什么没有字符串类型??基本类型:charshort、int、l...

3
JavaSE与JavaEE:从基础到企业... javase&#160;和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怎么【只】去掉字符串【前面的】空格?JAVA中是否去除空格1.Strin...

8
北京Java/C++程序员薪资揭秘:云计... 一本211大学4年工作经验java程序员&#47;C++程序员现在北京能...

9
命令行运行Java:从编写到执行全攻略 怎么在命令行下运行java?以下是使用记事本运行Java程序的步骤:编写Java...

10
Java字符串处理与键盘输入、文件读取技... 编写一个Java应用程序,从键盘读取用户输入两个字符串,并重载3个strAdd函...