多态与抽象类
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 }
运行效果:


浙公网安备 33010602011771号