鱼C论坛

 找回密码
 立即注册
查看: 3797|回复: 8

[已解决]JAVA多态

[复制链接]
发表于 2019-7-6 22:31:17 | 显示全部楼层 |阅读模式
20鱼币
个人解读的多态:
  就是
父类  对象名 =  new 子类对象名
只要子类继承于对象,重写了这个方法,并且子类对象指向的父类引用的这个父类对象,那么这就是多态
父类就可以调用子类中的方法


不知道我的理解是否有误 ,请指正,另外有个问题 :
1.为什么子类重写了父类中的成员变量,父类却不能调用子类中的成员变量呢?1
2.什么是引用?
3.new 出来的子类对象是把地址值传给了父类对象名吗?

PS:每个帮助我的,我都会鱼币感谢的!!^_^! !
最佳答案
2019-7-6 22:31:18
1.根据我的理解,
父类  对象名 =  new 子类对象名

其实是把父类特殊化,使它具有子类特征,但是只是特殊化,所以依旧是父类,因此不能使用子类中父类没有定义的成员变量等等

2.如果一个变量的类型是 类类型,而非基本类型,那么该变量又叫做引用
比如:
new Hero();
代表创建了一个Hero对象但是也仅仅是创建了一个对象,没有办法访问它为了访问这个对象,会使用引用来代表这个对象
Hero h = new Hero();
h这个变量是Hero类型,又叫做Hero类型的引用。


3.对于第三个问题,我的答案是对

最佳答案

查看完整内容

1.根据我的理解, 其实是把父类特殊化,使它具有子类特征,但是只是特殊化,所以依旧是父类,因此不能使用子类中父类没有定义的成员变量等等 2.如果一个变量的类型是 类类型,而非基本类型,那么该变量又叫做引用 比如: 代表创建了一个Hero对象但是也仅仅是创建了一个对象,没有办法访问它为了访问这个对象,会使用引用来代表这个对象 h这个变量是Hero类型,又叫做Hero类型的引用。 3.对于第三个问题,我的答案 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-7-6 22:31:18 | 显示全部楼层    本楼为最佳答案   
1.根据我的理解,
父类  对象名 =  new 子类对象名

其实是把父类特殊化,使它具有子类特征,但是只是特殊化,所以依旧是父类,因此不能使用子类中父类没有定义的成员变量等等

2.如果一个变量的类型是 类类型,而非基本类型,那么该变量又叫做引用
比如:
new Hero();
代表创建了一个Hero对象但是也仅仅是创建了一个对象,没有办法访问它为了访问这个对象,会使用引用来代表这个对象
Hero h = new Hero();
h这个变量是Hero类型,又叫做Hero类型的引用。


3.对于第三个问题,我的答案是对
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-7-8 09:37:39 | 显示全部楼层
My_A 发表于 2019-7-7 15:47
1.根据我的理解,

其实是把父类特殊化,使它具有子类特征,但是只是特殊化,所以依旧是父类,因此不能使 ...

既然是父类对象调用子类对象,是不是调用的时候,调用一个方法,先调用子类那个中的方法,如果子类中没有这个方法 ,再调用父类方法吗?
变量也是同理吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-7-8 09:42:52 | 显示全部楼层
My_A 发表于 2019-7-7 15:47
1.根据我的理解,

其实是把父类特殊化,使它具有子类特征,但是只是特殊化,所以依旧是父类,因此不能使 ...

那子类重写了父类方法,那这个父类对象就只能引用子类中的重写后的子类方法,而不能直接访问父类方法吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-7-8 10:49:19 | 显示全部楼层
买路郎 发表于 2019-7-8 09:42
那子类重写了父类方法,那这个父类对象就只能引用子类中的重写后的子类方法,而不能直接访问父类方法吗?

是的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-7-8 11:02:54 | 显示全部楼层
买路郎 发表于 2019-7-8 09:37
既然是父类对象调用子类对象,是不是调用的时候,调用一个方法,先调用子类那个中的方法,如果子类中没有 ...


父类对象调用子类对象,只会调用父类存在的属性及方法。
比如:
public class People{
    public void speak(){
        System.out.println("People is speaking!");
    }
}

public class Girl{
    public void speak(){
        System.out.println("Girl is speaking!");
    }
}

public class Boy{
    public void speak(){
        System.out.println("Boy is speaking!");
    }
}

public class running{
    public static void main(String[] args){
        Girl gilr  = new Girl()
        Boy boy = new Boy()
        talk(girl)
        talk(boy)
    }
    
    public void talk(People p){
        p.speak()
    }
}

//  可以看到输出是:
//  Girl is speaking!
//  Boy is speaking!
//  而不是 People is speaking!

所以这就是多态,极其方便
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-7-8 15:17:18 | 显示全部楼层
My_A 发表于 2019-7-8 11:02
父类对象调用子类对象,只会调用父类存在的属性及方法。
比如:

不是继承并重写了 才能算是多态吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-7-8 16:02:53 | 显示全部楼层
买路郎 发表于 2019-7-8 15:17
不是继承并重写了 才能算是多态吗?

我这里有个教学网址你可以看一下:
https://www.runoob.com/java/java-polymorphism.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-7-8 18:53:20 | 显示全部楼层
My_A 发表于 2019-7-8 16:02
我这里有个教学网址你可以看一下:
https://www.runoob.com/java/java-polymorphism.html

我一直在看这个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 04:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表