简述JAVA中继承实现代码复用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简述JAVA中继承实现代码复用相关的知识,希望对你有一定的参考价值。
看看下面这个例子,就会明白了:JAVA中继承可以实现代码复用,由于在父类中已经定义的方法,被子类继承以后,就可以使用,实现了代码的复用
class Father
private int moneyDollar=300;
int moneyHK=200;
int add(int x,int y)
return x+y;
class Son extends Father
int moneyRMB=800;
public void changMoneyHK(int x)
moneyHK=x;
public void changMoneyRMB(int x)
moneyRMB=x;
int subs(int x,int y)
return x-y;
class GrandSon extends Son
int multi(int x,int y)
return x*y;
public class Example5_1
public static void main(String args[])
int a=5,b=3;
Son son=new Son();
GrandSon sunzi=new GrandSon();
son.changMoneyHK(666);
son.changMoneyRMB(5000);
System.out.println("儿子的港币是继承的属性,当前的值是:"+son.moneyHK);
System.out.println("儿子的人民币是新增的属性,当前的值是:"+son.moneyRMB);
System.out.printf("减法是儿子新增的功能,%d-%d等于%d\n",a,b,son.subs(a,b));
System.out.printf("加法是儿子继承的功能,%d+%d等于%d\n",a,b,son.add(a,b));
System.out.println("孙子的港币和人民币都是继承的属性,,当前的值是:");
System.out.println("港币:"+sunzi.moneyHK+" 人民币:"+sunzi.moneyRMB);
System.out.printf("乘法是孙子新增的功能,%d*%d等于%d\n",a,b,sunzi.multi(a,b));
System.out.printf("加法是孙子继承的功能,%d+%d等于%d\n",a,b,sunzi.add(a,b));
System.out.printf("减法是孙子继承的功能,%d-%d等于%d\n",a,b,sunzi.subs(a,b));
参考技术A Java中使用"extends"作为其扩充父类别的关键字,其实就相当於我们一般所常称的继承(Inherit),只不过"extends"除了继承之外,还有将继承下来的类别予以新增定义的意思。
直接使用一个实际例子来说明好了:
* Point2D.java
public class Point2D
private int x, y;
public Point2D()
public Point2D(int x, int y) this.x = x; this.y = y;
public int getX() return x;
public int getY() return y;
* Point3D.java
public class Point3D extends Point2D // 扩充Point2D类别
private int z; // 新增私用资料
public Point3D()
super();
// 建构函式,同时指定呼叫父类别建构函式
Point3D(int x, int y, int z)
super(x, y);
this.z = z;
// 新增函式
public int getZ() return z;
* UseExtend.java
public class UseExtend
public static void main(String[] args)
Point3D p1 = new Point3D(1, 3, 4);
Point3D p2 = new Point3D();
System.out.printf("p1: (%d, %d, %d) \n",
p1.getX(), p1.getY(), p1.getZ());
System.out.printf("p2: (%d, %d, %d) \n",
p2.getX(), p2.getY(), p2.getZ());
执行结果:
p1: (1, 3, 4)
p2: (0, 0, 0)
当您扩充某个类别时,该类别的所有public成员都可以在衍生类别中被呼叫使用,而private成员则不可以直接在衍生类别中被呼叫使用;在这个例子中,Point2D中已经有x, y两个成员,您新增z成员,而方法上您新增一个public的getZ()方法,而getX()与getY()直接继承父类别中已定义的内容。
在扩充某个类别之后,您可以一并初始父类别的建构方法,以完成相对应的初始动作,这可以使用super()方法来达到,它表示呼叫基底类别的建构方法。
父类别的public成员可以直接在衍生类别中使用,而private成员则不行,private类别只限於定义它的类别来存取,如果想要与父类别的 private成员沟通,就只能透过父类别中继承下来的public函式成员,例如上例中的getX()与getY()方法。 参考技术B 下面这个例子就是S类中没有print()方法,但是他继承了P类,所以可以调用P类的print()方法,实现了简单的代码重用。
class P
public void print()
System.out.prinln("this is p");
public static void main(String[] args)
S s = new S();
s.print();
class S extends P
参考技术C 传说中能造人的只有女娲一个,为什么?因为人类产生之后,就不需要再造人了,而只要人类继承上一辈的就可以了,这就是继承 参考技术D 超类的方法和属性,子类可以直接调用
以上是关于简述JAVA中继承实现代码复用的主要内容,如果未能解决你的问题,请参考以下文章