`
tomcat_oracle
  • 浏览: 316933 次
社区版块
存档分类
最新评论

Java复用、多态&接口

    博客分类:
  • Java
阅读更多

可以为每一个类都创建main()方法,便于单元测试

  当创建一个导出类的对象时,该对象包含一个包装在导出类对象内部的基类对象,所以java会自动的在导出类的构造器中插入对基类构造器的调用(super),在构造过程中是从基类“向外”扩散。
  带参数的构造器:
   如果基类的构造器带有参数,如Super(int i){},则导出类的构造器既可以是无参,也可以有参,如Extend() or Extend(int i),但在导出类构造器中必须用用super(int i)调用基类的构造器,否则将调用基类默认的构造器,找不到则出错!
  代理:介于继承与组合,我们将一个成员对象置于所要构造的类中,但与此同时我们在新类中暴露了该成员对象的所有方法(就像继承),通过代理可以选择提供成员对象部分方法,java不直接支持代理!
  向上转型:导出类转换成基类,实际上仅仅是堆栈中的类引用的变化,增加了一个基类引用,指向堆中的对象(导出类引用和基类引用指向同一个对象),与导出类引用相比,基类引用仅仅是少了一些借口而已,如果基类引用指向的是一个导出类对象,则向下转型不会发生任何问题。
  final 数据:常量,参数:参数引用所指向的对象无法更改,方法:锁定,不被覆盖,类:不被继承
  private方法被自动认为是final方法,而对导出类是屏蔽的,不可重载
  “封装”通过合并特征和行为来创建新的数据类型。“实现隐藏”则通过将细节“私有化”把接口与实现分离,多态消除类型之间的偶合关系。
   方法绑定(将一个方法调用同一个方法主题关联起来):前期绑定(通过编译器和连接程序实现)用于面向过程的语言;后期绑定(动态、运行时绑定)在运行时 根据对象的类型进行绑定,在运行是判断对象的类型,从而调用恰当的方法。(此处说法与自己的理解稍有出入,主要是还不明白对象类方法调用机制)
  构造器内部的多态方法的行为:如果在一个构造器内部调用正在构造的对象的某个动态绑定方法,例子如下:
public class Test {
public static void main(String[] args) {
new B();
}
}
class A {
void func() { System.out.println("fA"); }
A() {
System.out.println("begin A");
func();
System.out.println("end A");
}
}
class B extends A {
void func() { System.out.println("fB " + i); }
int i = 1;
B() {
super();
System.out.println("B " + i);
}
}
/*output
begin A
fB 0
end A
B 1
*/
 (对象的初始化顺序见《初始化与清理》)首先执行基类A的构造方法,再调用func()方法,由于func()方法已被导出类B覆盖,实际上执 行的是B.func(),最后再执行类B的构造方法。问题的关键是在A中执行B.func()时,输出的i是0,而不是1,说明此时导出类B的成员还未初 始化,这也验证了《初始化与清理》中初始化的顺序问题。所以在构造器中唯一能安全调用的方法是基类的final方法。
  接口被用来建立类与类之间的协议
2
6
分享到:
评论
1 楼 hyj1254 2014-02-10  
单元测试用junit,更有一大批配套测试库如jmock可用。
日志用log4j。

相关推荐

    day02-多态&抽象类&接口1

    多态是Java面向对象设计的重要特性,它提供了代码的复用性和灵活性。通过多态,我们可以设计出更加通用的代码,同时保持良好的扩展性。在实际开发中,多态广泛应用于各种场景,如集合框架中的泛型、设计模式等。理解...

    面向对象进阶(多态&包&final&权限修饰符&代码块)

    面向对象编程是Java等许多现代编程语言的核心概念,它提供了模块化、封装、继承和多态等特性,使得代码更加可读、可维护和可复用。本篇将深入探讨面向对象进阶中的几个关键概念:多态、包、final关键字、权限修饰符...

    Java——多态与接口.rar

    在“Java——多态与接口”实验中,你可能需要编写一些示例代码来实践这些概念,例如创建一个基类,然后定义几个子类继承基类并覆盖其方法;再定义一个接口,让部分子类实现这个接口并提供接口方法的实现。通过运行和...

    java中多态的内存分析

    此外,Java中的接口也是实现多态的一种方式,通过实现接口,类可以拥有多个行为,这被称为接口多态。例如: ```java interface Soundable { void sound(); } class Animal implements Soundable { @Override ...

    详解java接口、继承和多态

    ### 详解Java接口、继承和多态 #### 一、Java接口 在Java中,接口是一种定义行为的方式,它提供了一种实现抽象方法的手段。通过接口,开发人员可以为类定义一组方法签名,但不提供这些方法的具体实现。这有助于...

    多态继承接口结构例子

    在C#编程语言中,多态(Polymorphism)、继承(Inheritance)和接口(Interface)是面向对象编程的三大核心特性。结构(Struct)则是C#中的一个基本类型,与类(Class)有所不同。本篇文章将深入探讨这些概念,并...

    java多态的总结

    Java的多态性是面向对象编程的一个核心特性,它允许我们使用一个接口来表示不同的类,使得代码更加灵活,易于维护。多态性是通过继承、接口和方法重写来实现的,它让程序在运行时能够根据对象的实际类型执行相应的...

    Java多态和实现接口的类的对象赋值给接口引用的方法(推荐)

    总的来说,Java的多态性和接口提供了强大的灵活性,使得代码能够在不依赖具体实现的情况下处理多种对象类型,增强了代码的复用性和可扩展性。理解和正确使用这些概念对于编写高效、易于维护的Java程序至关重要。

    Java-多态与接口综合案例_USB接口设计

    Java中的多态性是面向对象编程的一个核心特性,它允许我们使用父类类型的引用操作子类的对象,从而实现代码的灵活性和可扩展性。...同时,多态也使得`useDevice()`方法能灵活地处理各种USB设备,提高了代码的复用性。

    深入Java核心 Java中多态的实现机制编程资料

    ### 深入Java核心:Java中...通过以上讨论,我们可以看到Java中的多态机制是如何工作的,以及它是如何提高代码的复用性和灵活性的。多态是Java面向对象编程的核心概念之一,掌握好它对于编写高质量的Java程序至关重要。

    java 接口 类 继承 多态的简单实例

    Java编程语言以其面向对象特性,包括接口、继承、多态性等核心概念,为开发者提供了强大的设计和实现能力。在本实例中,我们将探讨这些关键概念,并通过具体代码示例来展示它们的实际应用。 首先,**接口...

    Java继承,多态,接口,常量,代码块

    在Java编程语言中,继承、多态、接口、常量以及代码块是核心概念,它们构建了面向对象编程的基础。让我们逐一深入理解这些知识点。 **继承(Inheritance)** 继承是面向对象编程的一个重要特性,它允许一个类(子类...

    第5章(接口与多态).ppt

    Java 接口与多态 Java 中的接口是一种抽象的概念,它定义了多个类之间的共同属性和行为。...接口和多态是 Java 中的两个重要机制,它们允许我们定义更加灵活和可扩展的类,提高代码的复用性和维护性。

    java 多态.docx

    在Java编程语言中,多态(Polymorphism)是一种核心特性,它允许我们设计更加灵活、可扩展的代码。多态使得一个接口可以有多种不同的实现或者表现形式,也就是说,同一段代码可以处理不同类型的数据。这主要通过继承...

    Lesson_面向对象继承,多态,接口_实训

    在Java中,多态是通过方法重写(Override)和接口实现来实现的。 然后,我们讨论一下**接口**。接口是一种定义行为规范的抽象类型,它规定了实现该接口的类必须提供哪些方法。接口在多个类之间提供了契约,确保所有...

    Java多态,面向对象编程题demo.zip

    Java多态是面向对象编程中的一个核心概念,它允许我们以一种统一的方式处理不同类型的对象。在Java中,多态性主要体现在方法的重写(Override)和重载(Overload)。通过多态,我们可以编写出更加灵活、可扩展的代码...

    Java 多态应用,掌握多态

    7. **多态的优缺点**:多态提高了代码的可复用性和可扩展性,使得程序更加灵活,降低了类之间的耦合度。但同时,由于运行时才能确定对象的实际类型,可能导致一些编译时无法发现的问题,如访问权限问题,以及在某些...

    深入Java核心Java中多态的实现机制.pdf

    通过这些多态形式,Java能够实现灵活的代码设计,提高代码的复用性和可维护性。理解并熟练运用多态是成为专业Java开发者的关键技能,它使得程序能够处理各种类型的数据,并根据对象的实际类型执行适当的操作,增强了...

Global site tag (gtag.js) - Google Analytics