本文共 1916 字,大约阅读时间需要 6 分钟。
使用继承一方面可以复用代码,公共的属性和行为可以 放到父类当中,而子类只需要关心子类的特有的性质就行可以了;另一方面,不同的子类的对象可以更为方便地被统一处理。
public class A { private int i; private static void write() { System.out.println("write....A"); } protected void fun() { System.out.println("hello !!!!!!!!!!"); }}
public class B extends A { @Override protected void fun() { // TODO Auto-generated method stub super.fun(); } private static void write() { System.out.println("write >>>>B"); } public static void main(String[] args) throws InterruptedException { B b = new B(); b.fun(); b.write();; }}
运行结果:
hello !!!!!!!!!!write >>>>B
如上所示,通过创建B的对象变量b;调用write()方法实质上是调用的子类的write() ,与父类无关。
public class Base { private static final int MAX_NUM = 1000; private int [] arr = new int[MAX_NUM]; private int count; public void add(int number) { if(count < MAX_NUM) { arr[count++] = number; } } public void addAll(int []numbers) { for(int num : numbers ) { add(num); } }}
public class Child extends Base { private long sum; @Override public void add(int number) { // TODO Auto-generated method stub super.add(number); sum +=number; } @Override public void addAll(int[] numbers) { // TODO Auto-generated method stub super.addAll(numbers); for(int i=0 ; i
子类中重写了Base类的add()与addAll()方法,再添加数字的同时把数字存放到数组中,存储数字的和到实例变量sum中,并提供getSum()获取sum的值。
使用addAll()方法添加{1,2,3,4},期望输出是1+2+3+4=10,但是实际输出为20.原因是数字被添加了俩回,子类需要知道基类的实现细节,才能可能避免地程序的错误实现。
转载地址:http://owegf.baihongyu.com/