关于多态,求助好心人

问题描述

关于多态,求助好心人
就是cat extends animal;animal a=new cat();new cat()这个对象的名字只是用animal a称呼了吧?
那为什么不可以a调用猫自己的特有方法呢

解决方案

谁告诉你a是猫了?a没有指明他到底是哪种动物,只有指明a=new Cat();a才表示猫,才有猫的特有方法

解决方案二:
多态——在我写这篇文章之前,我一直认为多态指的是“运行时多态”,就是在基类中借助virtual关键字实现的。
好,看到这里,忘记上面那句话。

  1. 多态是如何实现绑定的多态的绑定可以分为运行时多态和编译时多态。编译时的多态性是通过重载来实现的。对于非虚的成员来说,系统在编译时,根据传递的参数决定实现何种操作。(有些人写的是根据参数列表和返回值,但返回值在C++中式可以忽略的,因为其......
    答案就在这里:关于C++中的多态

解决方案三:
abstract class Animal{
abstract void say();
}
class Cat{
public void eat(){

    Systemoutprintln(""喵....."");}

}
Animal a = new Cat( );
创建的这个对象到底是那个类的对象,麻烦给我分析下,刚才复习的时候有些乱,这个是向上引用,指向的是父类,现在调用 a.say(); 调用的是Cat类里面的方法,是向上引用的对吧!
new关键字接的是什么,就是创建的哪个对象。
另外子类对象的实例可以用父类对象变量甚至接口变量来引用
现实中常见的写法
Map map = new HashMap();
List list = new ArrayList();
其中Map 与 List都是接口,HashMap与ArrayList都是实现接口的实现类,Java中允许这样定义。

解决方案四:
abstract class Animal{
abstract void say();
}
class Cat{
public void eat(){

    Systemoutprintln(""喵....."");}

}
Animal a = new Cat( );
创建的这个对象到底是那个类的对象,麻烦给我分析下,刚才复习的时候有些乱,这个是向上引用,指向的是父类,现在调用 a.say(); 调用的是Cat类里面的方法,是向上引用的对吧!
new关键字接的是什么,就是创建的哪个对象。
另外子类对象的实例可以用父类对象变量甚至接口变量来引用
现实中常见的写法
Map map = new HashMap();
List list = new ArrayList();
其中Map 与 List都是接口,HashMap与ArrayList都是实现接口的实现类,Java中允许这样定义。

解决方案五:
Animal a = new Cat(); new Cat()这个动作先创建父对象Animal,再跳到Cat的构造函数创建子对象Cat。然后“=”将Cat的引用赋给Animal 的引用a,a才能够调用Cat对象中的方法。java的东西基本都封装了,想更深挖的话建议看看C++的多态机制。

解决方案六:

        声明是什么类它就是什么类,声明是animal类它就只有animal类的功能        就像是告诉它,你是动物类,所以它虽然本来是猫,它却不知道自己是猫,当你想让它知道自己是猫,你就强制转换回来:(cat)a;这时它才明白过来自己是猫,就可以用猫的功能了:(cat)a.猫叫();

解决方案七:
我的理解是new cat()是cat的实例他是可以调用cat本身的方法的,但是animal a=new cat()用animal接收了,也就是现在这个cat已不是cat而是animal,
而animal是cat的父类是不可以调用其子类特有的方法的

解决方案八:
我的理解是new cat()是cat的实例他是可以调用cat本身的方法的,但是animal a=new cat()用animal接收了,也就是现在这个cat已不是cat而是animal,
而animal是cat的父类是不可以调用其子类特有的方法的

时间: 2024-09-27 14:33:58

关于多态,求助好心人的相关文章

nginx怎样配置欢迎页即首页到index.html静态文件,其它带后缀的请求都到tomcat里呢?

问题描述 nginx怎样配置欢迎页即首页到index.html静态文件,其它带后缀的请求都到tomcat里呢? 用nginx配置了反向代理到tomcat,静态图片访问本地一个目录里. location / { proxy_connect_timeout 30; proxy_send_timeout 30; proxy_read_timeout 30; proxy_pass http://neiwang; } #静态文件访问 location ~ ^/(upload|static)/ { root

oracle 数据库 archar 类型 存放的是数字值,怎么按数字大小排序

问题描述 oracle 数据库 archar 类型 存放的是数字值,怎么按数字大小排序 select stu.numstu.namestu.class_idstu.class_name from student stuclass cs on cs.class_id=stu.class_idorder by stu.num 这个语句要按 stu.num 排序,但是数据库类型是varchar存放的是数字,怎么按大小排序,求助好心人,.. 解决方案 Collections.sort(queryList

虚函数-小白求助c++中一些关于多态的问题

问题描述 小白求助c++中一些关于多态的问题 1.基类的析构函数不是虚函数,在析构派生类的时候基类会不会被析构 2.基类的析构函数不是虚函数,在析构基类类的时候派生类会不会被析构 3.虚基类的析构函数是不是虚函数? 解决方案 1.无论基类的析构函数是不是虚函数,析构派生类的时候都会调用基类析构函数 2.如果从派生类被引用为基类然后析构,那么会导致只调用基类析构函数,而不调用派生类析构函数,所以基类析构函数应定义为虚函数 3.虚基类是解决多重继承时基类被多次继承导致的冲突的(如BC类继承于A,D类

音乐播放-求助,在做音乐网站遇到的一个难题,求各路好心人支招

问题描述 求助,在做音乐网站遇到的一个难题,求各路好心人支招 a页面是用datalist做的一个页面有图片跟歌曲名两项内容,b页面是播放页面.如何点击a页面的歌曲名然后跳到b页面播放对应ID的数据库中的歌曲.. 解决方案 那么你的问题在哪里呢? 解决方案二: 用GET或POST都可以解决这个问题. 解决方案三: a页面在图片上做个超链接,点击后将ID发给B页面B页面再根据ID到库中检索歌曲位置,将歌曲加载到b中的播放器中. 解决方案四: 点击a页面的歌曲名的时候能获取到 歌曲对应的Id, 传到b

java继承多态-java继承问题,菜鸟求助

问题描述 java继承问题,菜鸟求助 1.定义一个类,包含两个以上的私有成员,两个以上的方法以及一个构造函数 从该超类继承得到至少三个子类,这三个子类分别要在超类的基础上增加至少一个成员,至少一个方法以及同时重写超类中的同一个方法. 3.编写程序,用子类的对象去访问超类的方法和自己的方法 编写一个方法,用超类作为形式参数. 分别用三个子类对象作为实际参数调用该方法,并在方法中实现多态. 要求满足上面的条件,求大神附上代码,谢谢 解决方案 菜鸟不可怕,可怕的是不学的菜鸟.少年,java语法都学会了

求助-哪位好心人帮我看下代码吧,深度遍历搜索图的,有点长,麻烦看下吧

问题描述 哪位好心人帮我看下代码吧,深度遍历搜索图的,有点长,麻烦看下吧 //深度遍历搜索图 #include #include #define MAX_VERTEX_NUM 3 typedef enum {DG,DN,UDG,UDN} GraphKind;//图的类型 typedef int OtherInfo; //弧的信息,如权 typedef char VertexData;//图结点的内容为char typedef struct ArcNode { int adjvex; struct

新手!!求助各位好心人!!!命名空间并不直接包含诸如字段或方法之类的成员

问题描述 错误提示一:(3072):命名空间并不直接包含诸如字段或方法之类的成员错误二:(3093):应输入类型.命名空间定义或文件尾代码:privatevoidmnuStatisStudy_ItemClick(objectsender,(这是3072行)DevExpress.XtraBars.ItemClickEventArgse){if(!CStatic.ValidateRight("Statis"))return;this.Cursor=Cursors.WaitCursor;Re

求助:下面这段代码我看不太懂,有没有好心人帮我添加一下注释,帮我理解一下。拜托拜托。

问题描述 usingSystem;usingSystem.IO.Ports;usingSystem.Threading;publicclassPortChat{//定义静态函数staticbool_continue;staticSerialPort_serialPort;publicstaticvoidMain(){stringname;stringmessage;StringComparerstringComparer=StringComparer.OrdinalIgnoreCase;Thre

node js-#node.js新手求求助。。

问题描述 #node.js新手求求助.. #node.js新手求求助.. 刚刚接触node.js,但是刚开始就遇到问题..node.js安装在了d盘,本打算测试一下,在E盘建了个文件夹,然后里边有个hello.js,但是就出了个这么个问题如图,看别的帖子好像说是相对路径绝对路径的问题,但是我真心不懂node.js对路径有什么用规则,所以求好心人告诉一下.. 解决方案 要看你的脚本了,看上去是标识符没有定义. 解决方案二: 这个不是nodejs的问题吧,Unexpected identifier