IT前沿技术
    IT名企招聘
    IT技术网站
首页 >> IT沙龙 >> IT前沿技术

Java 中使用接口实现多继承和多态的方法

1.JAVA 里没有多继承,一个类之能有一个父类。

而继承的表现就是多态。一个父类可以有多个子类,而在子类里可以重写父类的方法(例如方法 print() ),这样每个子类里重写的代码不一样,自然表现形式就不一样。这样用父类的变量去引用不同的子类,在调用这个相同的方法 print() 的时候得到的结果和表现形式就不一样了,这就是多态,相同的消息(也就是调用相同的方法)会有不同的结果。举例说明:

// 父类

public class Father{

// 父类有一个打孩子方法

public void hitChild(){}

}

// 子类 1

public class Son1 extends Father{

// 重写父类打孩子方法

public void hitChild(){

System.out.println(" 为什么打我?我做错什么了! "); }

}

// 子类 2

public class Son2 extends Father{

// 重写父类打孩子方法 public void hitChild(){

System.out.println(" 我知道错了,别打了! "); }

}

// 子类 3

public class Son3 extends Father{

// 重写父类打孩子方法 public void hitChild(){

System.out.println(" 我跑,你打不着! "); }

}

// 测试类

public class Test{

public static void main(String args[]){

Father father;

father = new Son1();

father.hitChild();

father = new Son2();

father.hitChild();

father = new Son3();

father.hitChild();

}

}

都调用了相同的方法,出现了不同的结果!这就是多态的表现!

2.JAVA 中没有多继承,而用接口实现了多继承!一个类或是可以同时实现多个接口!(就相当于 C++ 里一个类同时继承了多个类!)例如:

public class Son implements Father1,Father2,Father3{

}

接口有利于代码功能的扩展(增加新的功能)!而继承则有利于代码功能的修改(把旧的功能改成新的功能)!这里旧功能的修改和新功能的增加前提是不修改旧的功能,旧的功能仍然可以使用!旧类的代码也不做修改!

接着上面的继承举例:上面例子中的子类我们统称为一代子类

1. 用继承修改旧的功能。

现在如果一代 Son1 的功能打孩子,也就是方法 hitChild() 里边的功能实现有问题,我们要把具体实现修改掉,那么我们可以重新写一个新的二代子类 Son11 继承自一代子类 Son1 ,并重写其 hitChild() 方法。

// 二代子类

public class Son11 extends Son1{

// 重写父类打孩子方法

public void hitChild(){ System.out.println(" 我是二代子类对此方法的新实现 ");

}

}

2. 用接口实现增加新的功能。

现在类 Son1 已经有了 ‘ 打孩子 ' 功能(也就是方法),而我们有了新的需求,我们需要它还要有一个新的功能 ‘ 宠孩子 ' (新方法 pet(); )。而旧的代码不能动!那么我们可以定义一个新的接口( PetInterFace ),接口里定义这个方法 pet() 的声明。再重新写一个二代子类 Son11 ,让它先继承类 Son1 ,同时实现接口 PetInterFace !并实现接口里的 pet() 方法!

// 新接口

public interface PetInterFace{

// 新功能方法 public void pet();

}

// 二代子类

public class Son11 extends Son1 implements PetInterFace{

// 实现接口方法

public void pet(){

System.out.println(" 父亲很爱我! ");

}

}

这样这个二代子类即有了老的方法,又有新的功能!