买路郎 发表于 2019-7-6 22:31:17

JAVA多态

个人解读的多态:
就是
父类对象名 =new 子类对象名
只要子类继承于对象,重写了这个方法,并且子类对象指向的父类引用的这个父类对象,那么这就是多态
父类就可以调用子类中的方法


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

PS:每个帮助我的,我都会鱼币感谢的!!^_^! !

My_A 发表于 2019-7-6 22:31:18

1.根据我的理解,
父类对象名 =new 子类对象名
其实是把父类特殊化,使它具有子类特征,但是只是特殊化,所以依旧是父类,因此不能使用子类中父类没有定义的成员变量等等

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


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

买路郎 发表于 2019-7-8 09:37:39

My_A 发表于 2019-7-7 15:47
1.根据我的理解,

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

既然是父类对象调用子类对象,是不是调用的时候,调用一个方法,先调用子类那个中的方法,如果子类中没有这个方法 ,再调用父类方法吗?
变量也是同理吗?

买路郎 发表于 2019-7-8 09:42:52

My_A 发表于 2019-7-7 15:47
1.根据我的理解,

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

那子类重写了父类方法,那这个父类对象就只能引用子类中的重写后的子类方法,而不能直接访问父类方法吗?

My_A 发表于 2019-7-8 10:49:19

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

是的

My_A 发表于 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!

所以这就是多态,极其方便{:10_256:}

买路郎 发表于 2019-7-8 15:17:18

My_A 发表于 2019-7-8 11:02
父类对象调用子类对象,只会调用父类存在的属性及方法。
比如:



不是继承并重写了 才能算是多态吗?

My_A 发表于 2019-7-8 16:02:53

买路郎 发表于 2019-7-8 15:17
不是继承并重写了 才能算是多态吗?

我这里有个教学网址你可以看一下:
https://www.runoob.com/java/java-polymorphism.html

买路郎 发表于 2019-7-8 18:53:20

My_A 发表于 2019-7-8 16:02
我这里有个教学网址你可以看一下:
https://www.runoob.com/java/java-polymorphism.html

我一直在看这个
页: [1]
查看完整版本: JAVA多态