java基础三大特性――封装、继承与多态(二)

2014-11-24 08:44:45 · 作者: · 浏览: 8
格式:[修饰符] class 类名 [extends 父类] [implements 接口]{}
非抽象类,必须实现接口的所有方法;
抽象类的非抽象子类中对其父类所实现的接口中的所有抽象方法都必须实现。
2.一个类除继承另外一个类,还可以实现接口:
class IAImpl extends java.util.Arrylist implement IA,IB{}
1) 一个类实现了某个接口,则必须实现接口中的所有方法,如果没有实现接口中的所有方法,则此类一定是抽象类。因为一个类实现接口,相当于它继承一个抽象类。
2) 接口中方法可不写public,但在子类中实现接口的过程中public不可省。(如果省去public则在编译的时候提示出错:对象无法从接口中实现方法,相当于降低了重写方法的权限。)
3) 如果父类实现了某个接口,子类不需要使用implements关键字声明就可以使用此接口。
4) 接口也可以用于定义对象
IA iA=new IAImpl(); //类似于上转型对象
上转型对象特点:
n 上转对象不能操作子类新增的成员变量(失掉了这部分属性);不能使用子类新增的方法(失掉了一些功能)。
n 上转型对象可以操作子类继承或隐藏成员变量,也可以使用子类继承的或重写的方法。
n 上转型对象操作子类继承或重写的方法时,就是通知对应的子类对象去调用这些方法。因此,如果子类重写了父类的某个方法后,对象的上转型对象调用这个方法时,一定是调用了这个重写的方法。
n 可以将对象的上转型对象再强制转换到一个子类对象,这时,该子类对象又具备了子类所有属性和功能。
接口使用案例:
interface IDetail{  
       public String detail();  
}  
  
class Teacher implements IDetail {  
       private String name;  
       private int age;  
       private String type;  
       public Teacher(String name, int age, String type) {  
              this.name = name;  
              this.age = age;  
              this.type = type;  
       }  
      // 返回教师详细信息  
       public String detail() {  
              return "姓名:" + name + ",年龄:" + age + ",教师类型:" + type;  
       }  
}  
  
class Printer {  
       public void print(String s) {  
              System.out.println(s);  
       }  
}  
  
class MedicalInspection implements IDetail{  
  
       Printer printer = new Printer();  
       // 返回体检中心信息  
       public String detail() {  
              return "这里是滨州市体检中心,欢迎您的到来!";  
       }  
  
       // 打印detail信息  
       public void printDetail(IDetail d) {  
              printer.print(d.detail());  
       }  
}  
  
public class ExDemon03 {  
  
       public static void main(String[] args) {  
  
              MedicalInspection mi=new MedicalInspection();  
              IDetail t = new Teacher("李四", 33, "Java");  
  
              mi.printDetail();// 打印教师信息  
                mi.printDetail(mi);// 打印中心信息  
       }  
}