跟我学JAVA / 第六课:深入Java类——关联关系 聚合关系 接口与抽象类

2018-03-09

本章我们将学到的知识点: 

1、关联关系   2、聚合关系   3、接口与抽象类

一、类的关联关系

1.关联关系:表示不同类的对象之间的结构关系,它在一段时间内将多个类的实例连接在一起。 通过关联关系可以表示对象之间的沟通。 多个对象处于同一个层次上

包括: 一对一关系 一对多关系 多对多关系

2.聚合关系:聚合关系是关联关系的一种,是强的关联关系,表示整体与个体的关系。

聚合关系用于对模型元素之间的组装关系进行建模。如: 汽车由很多零部件组成; 计算机由很多设备组成; 图书馆由很多书组成; 公司由很多部门组成。

二、抽象类

在java中用abstract关键字来修饰一个类时,这个类叫做抽象类。

abstract class className{ }

抽象类的特点: 抽象类不能直接运用new创建对象 抽象类的实体中可以有abstract方法,且abstract方法只允许声明,而不允许实现

抽象类中不一定要包含abstract方法,但一个类中包含了abstract方法,则这个类必须声明为abstract类。 抽象类的实现子类必须实现抽象类中所有的abstract方法

abstract returnType method([paramList]);

三、接 口

接口:是抽象类的一种,只包含常量和方法的定义,而没有变量和方法的实现,且其方法都是抽象方法。

接口的含义: 所有实现了该特定接口的类看起来都象它。

接口定义:

1、 access为public 或没有(默认包访问修饰符)。

2、包括接口声明和接口体;接口体包括常量定义和方法定义。

3、常量被实现该接口的多个类共享; 具有public ,final, static的属性。

4、方法体具有 public和abstract属性。

接口定义例子:

Interface Callback{
     String name = "interface callback";
     void callback(int param);
}

接口的实现-implements 关键字:

实现格式:

access class classname [ extends superclass ] 
          [implements interface[ , interface…] ]{
    //class-body
 }

1、access是public或没有(默认包访问修饰)。

2、一个类可以实现多个接口,在implements子句中用逗号分开。

3、实现类共享接口中定义的常量为,而且必须实现接口中定义的所有方法。

4、实现接口的方法必须声明成public,且必须严格与接口定义中制定的类型匹配。

5、若多个接口中有相同的方法,只现实一次。

6、可在实现类中定义自己的附加变量或方法。

接口实现的例子:

public class Client implements Callback{
       //实现接口中定义的方法
       public void callback(int p){
             System.out.println("callback called with "+p);    
       }
    
      //自定义方法
       public void nonIfaceMeth(){
             System.out.println("define other method");    
       }

}

接口的局部实现--抽象类:

如果一个类包含一个接口但是不完全实现接口中定义的方法,那么该类必须定义成abstract型。 例如:

abstract class Incomplete implements Callback{
      int a,b;
      void show(){
            System.out.println(a + “ “+b);
      }
}

任何继承Incomplete的类都必须实现callback()方法,或是自己也定义成abstract类。

用接口实现多重继承—接口的应用:

1、用接口实现多重继承 2、用接口来实现群组常量的定义 3、可以将接口当成接口类型来使用 4、接口可以扩展

Java只支持单继承,那么我们可以通过实现接口的方式,让一个类拥有多个类型的操作。

例如: 如果要表示一个X是一个A和一个B以及一个C;

跟我学JAVA / 第六课:深入Java类——关联关系 聚合关系 接口与抽象类

因为接口中定义的任何字段都是static和final的,可以将接口当成创建常量组的工具。

 public interface Months{
         int  JANUARY = 1, FEBRUARY = 2,  MARCH = 3,
               APRIL = 4, MAY = 5, JUNE = 6, JULY = 7,
               AUGUST = 8, SEPTEMBER = 9, OCTOBER = 10,
               NOVERBER= 11, DECEMBER = 12;
  }

引用的方法:packageName.Months.JANUARY即可代表数字1。

缺点: 缺少安全性。

接口可作为一种引用类型来使用。 可创建一个接口类型的类实例对象。 一个接口引用变量仅知道被它的接口定义声明的方法。

跟我学JAVA / 第六课:深入Java类——关联关系 聚合关系 接口与抽象类

通过继承可以在新接口中添加新的方法,还可以在新接口中组合数个接口。当一个类实现了该接口,它必须实现接口继承链表中定义的所有方法。

跟我学JAVA / 第六课:深入Java类——关联关系 聚合关系 接口与抽象类