首页 > 其他分享 >多态

多态

时间:2022-10-15 19:34:16浏览次数:54  
标签:parent 子类 多态 printValue myValue 父类 public

 

class Mammal{}
class Dog extends Mammal{}
class Cat extends Mammal{}
public class TestCast
{
public static void main(String args[])
{
Mammal m;
Dog d=new Dog();
Cat c=new Cat();
m=d;
//d=m;错误
d=(Dog)m;//正确
//d=c;错误
m=c;
c=(Cat)m;//正确

}
}

子类对象可以直接赋给基类变量。

基类对象要赋给子类对象变量,必须执行类型转换,其语法是: 子类对象变量=(子类名)基类对象名;


 

public class ParentChildTest
{
public static void main(String[] args)
{
Parent parent=new Parent();
parent.printValue();
Child child=new Child();
child.printValue();

parent=child;
parent.printValue();

parent.myValue++;
parent.printValue();

((Child)parent).myValue++;
parent.printValue();

}
}

class Parent
{
public int myValue=100;
public void printValue()
{
System.out.println("Parent.printValue(),myValue="+myValue);
}
}
class Child extends Parent
{
public int myValue=200;
@Override
public void printValue()
{
System.out.println("Child.printValue(),myValue="+myValue);
}
}

 

总结:

当子类与父类拥有一样的方法,并且让一个父类变量引用一个子类对象时,到底调用哪个方法,由对象自己的“真实”类型所决定,这就是说:对象是子类型的,它就调用子类型的方法,是父类型的,它就调用父类型的方法。 这个特性实际上就是面向对象“多态”特性的具体表现。

如果子类与父类有相同的字段,则子类中的字段会代替或隐藏父类的字段,子类方法中访问的是子类中的字段(而不是父类中的字段)。如果子类方法确实想访问父类中被隐藏的同名字段,可以用super关键字来访问它。 如果子类被当作父类使用,则通过子类访问的字段是父类的

 

 

使用多态最大的好处是:在编程中应用多态,可以使我们的代码具有更强的适用性。当需求变化时,多态特性可以帮助我们将需要改动的地方减少到最低限度。

 

 

标签:parent,子类,多态,printValue,myValue,父类,public
From: https://www.cnblogs.com/mendianyu/p/16794852.html

相关文章

  • 03继承与多态
    源代码packageshiyan;classAnimal{voideat(){ System.out.println("animal:eat"); } } classDogextendsAnimal{ voideat(){ System.o......
  • 多态
    多态有什么好处?有两个好处:应用程序不必为每一个派生类编写功能调用,只需要对抽象基类进行处理即可。大大提高程序的可复用性。//继承派生类的功能可以被基类的方法或引用变......
  • 动手动脑--多态小结
      通过在编程中应用多态,可以使我们的代码具有更强的适用性。当需求变化时,多态特性可以帮助我们将需要改动的地方减少到最低限度。多态编程有两种主要形式:(1)继承多态:示......
  • 继承与多态4 在实践中理解把握复杂的知识
    总结(1):子类父类拥有同名的方法时……当子类与父类拥有一样的方法,并且让一个父类变量引用一个子类对象时,到底调用哪个方法,由对象自己的“真实”类型所决定,这就是说:对象是......
  • 多态
    同样的函数,传入不同的参数,得到不同的状态案例1多态常作用在继承关系上抽象类(接口)、抽象方法父类的方法是空实现,父类制定标准,子类去实现方法体是空实......
  • 重写多态oppdemo7
    publicclassPerson{publicvoidrun(){System.out.println("father");}}/*多态注意事项:1.多态是方法的多态,属性没有多态2.父类和子类有联系类型转换......
  • c语言实现继承、封装、多态
    c语言实现多态,点击进入主要内容:多态:利用设计和实现一个易于扩展的系统;c++中多态指:具有不同功能的函数可以用同一个函数名,这样可以用一个函数名调用不同内容的函数;静态多......
  • 面向对象之多态
    鸭子类型我们都知道面向对象的语言有三大特性:封装、继承和多态,在这里我浅谈一下python的多态1classPageOne:2defstatus(self):3return"按期......
  • java 多态
    /***obj-2*多态*/abstractclassFruits{abstractvoidcolour();}/***obj-2*/publicclassAppleextendsFruits{publicvoidcolour(){System......
  • day08 final关键字&面向对象——多态&抽象类、方法&向上、向下转型
    day08final关键字最终的不可更改的特点:1)修饰类,类不能被继承2)修饰方法,方法不能被重写3)修饰成员变量(变为常量),值不能修改,名字大写,声明同时给常量赋值main方法中1)修饰......