多态与抽象类

abstract是一个关键字,用来表示抽象方法和抽象类。我们直接在代码里面看:

 1 package com.hw.InnerClassDemo;
 2 /**
 3  * 抽象方法的作用:
 4  * 用来被继承。
 5  * @author Administrator
 6  *
 7  */
 8 
 9 abstract class A{  //抽象类(不能构造对象!)
10     private int a;
11     private String b;
12     public A(){
13         
14     }
15     public A(int a,String b){
16         this.a = a;
17         this.b = b;
18     }
19     abstract void method();  //抽象方法只能这么写,若一个类中含有抽象方法,则这个类必须被声明为抽象类
20 }
21 
22 class B extends A{ 
23     //在继承的子类里面,实现方法的完整编写。
24     public void method(){
25         System.out.println("我是一个抽象方法");
26     }
27     public void print(){
28         System.out.println("我是另外一个方法");
29     }
30 }
31 
32 class C extends A{
33     public void method() {
34         System.out.println("我是一个抽象方法");
35     }
36     public void methodHey(){
37         System.out.println("Hey!");
38     }
39 }
40 
41 public class LastOne {
42     public static void main(String[] args){
43         B b = new B();
44         b.method();
45         //但抽象方法可以声明对象
46         A a = new B();
47         a.method();
48         A a1 = null;   //这样子声明之后,不可以用a1直接调用print方法
49         a1 = new B();  //这样之后,虽然使用A声明a1,但实际上a1是B的,就可以调用B里面的方法
50         ((B)a1).print();   //要先进行强制类型转换,才能调用print方法
51         
52         a1 = new C();  //a1可以是B类的,也可以是C类的,这就叫做多态(多种形态)。利用父类声明,利用子类构造
53         ((C)a1).methodHey();
54     }
55 }

运行效果:

 

posted @ 2021-01-29 19:59  EvanTheBoy  阅读(63)  评论(0)    收藏  举报