1.什么是多态
面向对象的多态性就是将父类对象应用到子类对象的特征。简单地讲,多态指的就是在应用程序中出现的“重名”现象。多态性允许以统一的风格编写程序,以处理种类繁多的已存在的类和相关类。这样既降低了维护的难度,又节省了时间。
2.在java语言中,多态性体现在哪些方面
- 方法重载: 通常是指在同一个类中,相同的方法名对应着不同的方法实现,这些方法名相同的方法其区别在于他们需要的参数不同。即采用不同的方法形参表,区分重载方法要求形参在数据类型、个数和顺序的不同。(见实例2.1)
- 方法重写: 方法重写主要用于父类和子类间。子类重写父类的方法,只是对应的方法实现不同,其方法名和参数都相同。(见实例2.2)
- 抽象类: 在java语言中,一个类中的方法只给出了标准,而没有给出具体的实现方法,这样的类就是抽象类。例如父类就是抽象类,它不会被实例化的类。
- 接口: 在多态机制中,接口比抽象类使用起来更加方便。而抽象类组成的集合就是接口。
实例2.1 该类中声明了两个show方法,但是两个方法的形式参数是不同,所以说第二个show方法重载了第一个show方法
1 /* 定义类TestPolymorphisml*/ 2 public class TestPolymorphisml { 3 4 String s="这是方法重载的实例"; 5 String ss="这是一个TestPolymorphisml类"; 6 public void show(){ 7 System.out.println("我是show方法"+ss); 8 } 9 public void show( String str){ //这个方法就是对上一个show方法的重载,方法名相同,只是他们需要的形参不一样 10 System.out.println("我重载了show方法"+str); 11 } 12 public static void main(String[] args) { 13 TestPolymorphisml test = new TestPolymorphisml(); 14 test.show(); //对象调用第一个show方法 15 test.show(test.s); //调用重载的show方法 16 } 17 }
运行结果:
实例2.2 先新建一个A类,再建一个类继承A类,在子类中对父类的属性和方法进行重写
1 /*定义A类*/ 2 public class A { 3 String a="我是A类"; 4 public void showA(){ 5 System.out.println(a); 6 } 7 }
1 /*定义类TestPolymorphism2 让它继承A类*/ 2 public class TestPolymorphism2 extends A{ 3 String b="我是重写方法"; //这是对父类的a属性的重写 4 public void showA(){ //这是对父类showA方法的重写 5 super.showA(); //使用关键字super调用父类的showA方法 6 System.out.println(b); 7 } 8 public static void main(String[] args) { 9 TestPolymorphism2 n = new TestPolymorphism2(); //创建对象n 10 n.showA(); 11 } 12 }
运行结果:
在实验中我们可以很清晰的看出多态性在java语言编程中占着多么重要的地位。