java基础特性-多态

多态

 

一、概念:

不同方法名中的不同实现。

不同实现的有两种表现形式:重写(overwrite)和重载(overload)。

 

1.重写(overriding):在有继承关系的两个类中,子类继承了父类的方法,当子类对象实例赋值给父类对象引用时,通过父类调用方法时,是调用的子类的方法,这种方式叫子类覆盖/重写了父类方法,也叫动态链接或者动态方法调用。

 

总结:因此通过父类的引用不同子类中的重写的方法而实现不同的行为,则实现了多态性。

 

例子:

class Father{
        public void show(){
            System.out.println('这是父类执行的方法');
        }
}

class ChildA extends Father{
       public void show(){
            System.out.println('这是子类A执行的方法');
       }
}

class ChildB extends Father{
       public void show(){
            System.out.println('这是子类B执行的方法');
       }
}

class Test{
      public static void main(String[] args){
             Father a = new ChildA();
             Father b = new ChildB();
             a.show();
             b.show();
      }
}

 

控制台输出:

这是子类A执行的方法

这是子类B执行的方法

 

2.重载(overloading):在同一类中,两个或两个以上一样的方法名,但是不同的参数或者返回类型。

 

总结:通过该类实例调用同一样方法名不同参数的方式实现了不同行为,则实现了多态性。

 

例子:

class Test {
        public void show(String str){
                 System.out.println("字符串参数:"+str);
        }

        public void show(int a,int b){
                 System.out.println("数字型参数:"+a+","+b);
        }

        public static void main(String[] args){
                 Test t = new Test();
                 t.show("helloworld");
                 t.show(1,2);
        }
}

 

控制台输出:

字符串参数:helloworld

数字型参数:1,2

 

 

你可能感兴趣的:(java,多态)