《java语言程序设计》第十三章学习总结

抽象类
    有时候,一个父类设计得非常抽象,以至于它都没有任何具体的实例。这样的类称为抽象类。

    抽象类和常规类很像,但是不能使用new操作符创建它的实例。抽象方法只有定义而没有实现。它的实现由子类提供。一个包含抽象方法的类必须声明为抽象类。

    抽象类的构造方法定义为protected,因为它只被子类使用。创建一个具体子类的实例时,它的父类的构造方法被调用以初始化父类中定义的数据域。

    抽象方法不能包含在非抽象类中。如果抽象父类的子类不能实现所有的抽象方法,那么子类也必须定义为抽象的。换句话说,在抽象类扩展的非抽象类中,必须实现所有的抽象方法。还要注意到,抽象方法是非静态的。

    抽象类是不能使用new操作符来初始化的。但是,仍然可以定义它的构造方法,这个构造方法在它的子类的构造方法中调用。

    包含抽象方法的类必须是抽象的。但是,可以定义一个不包含抽象方法的抽象类。在这种情况下,不能使用new操作符创建该类的实例。这种类是用来定义新子类的基类的。

    子类可以覆盖父类的方法并将它定义为abstract。这是很少见的,但是它在当父类的方法实现在子类中变得无效时是很有用的。在这种情况下,子类必须定义是为abstract。

    即使子类的父类是具体的,这个子类也可以是抽象的。例如,Object类是具体的,但是它的子类如GeometricObject可以是抽象的。

    不能使用new操作符从一个抽象类创建一个实例,但是抽象类可以用作一种数据类型。
    eg:GeometricObject[] objects = new GeometricObjrct[10];
    object[0] = new Circle();
接口
    接口是一种与类相似的结构,只包含常量和抽象方法。接口在许多方面都与抽象类很相似,但是它的目的是指明相关或者不相关类的多个对象的共同行为。

    类和接口之间的关系称为接口继承。因为接口继承和类继承本质上是相同的,所以我们将它们都简称为继承。

    由于接口中所有的数据域都是public static final而且所有的方法都是public abstra,所以java允许忽略这些修饰符。
类的设计原则
    内聚性,类应该描述一个单一的实体,而所有的类操作应该在逻辑上互相配合,支持一个一致的目的。

    一致性,遵循标准java程序设计风格和命名习惯。为类,数据域和方法选取具有信息的名字,通常的风格是将数据声明置于构造方法之前,并且将构造方法置于方法之前。如果不想让用户创建类的对象,可以在类中声明一个私有的构造方法,Math类就是如此。

    封装性,只在希望数据域可读的情况下,才提供get方法;也只在希望数据域可更新的情况下,才提供set方法。

    清晰性,易于解释和理解。

    完整性,类是为许多不同用户的使用而设计的。为了能在一个广泛的应用中使用,一个类应该通过属性和方法提供多种方案以适应用户的不同需求。

    实例和静态,依赖于类的具体实例的变量或方法必须是一个实例变量或方法。如果一个变量被类的所有实例所共享,那就应该将它的声明为静态的。应该总是使用类名引用静态变量和方法。应该总是使用类名而不是引用静态变量和方法。不要从构造方法中传入参数来初始化静态数据域。最好使用set方法改变静态数据域。
小提示
    1.Number类是数据包装类,BigInteger以及BigDecimal的抽象父类。
    2.GregorianCalendar是抽象类Calendar的一个具体子类。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值