`

Java基础恶补——OO

    博客分类:
  • Java
 
阅读更多

[SCJP Sun Certified Programmer for Java 6 Study Guide (Exam 310-065)]  chapter 2

 

一. 封装, IS-A, HAS-A

1. 通过封装可以隐藏接口(或API)的实现细节。

2. 封装代码的特点:实例变量是 protected 或 private 的,通过 getter, setter 方法提供访问。

3. IS-A:

1) 指的是继承或实现。

2) 表现形式为关键字 extends 。

3) 和 "inherits from,"  "is a subtype of " 是同等含义。

4. HAS-A 指的是一个类的实例中存在着对另一个类或本类的实例的引用。

 

二. 继承

1. 继承允许一个类成为另一个的子类,并继承父类的 public, protected 变量和方法。

2. 继承是 IS-A, 多态, overriding, overloading, casting 的关键概念。

3. 所有类(Object 除外)都是Object的子类,继承Object的方法。

 

三. 多态

1. 多态的意思是“多种形式”。

2. 1个引用变量总是1个单独的、不能被改变的类型,但它可以指向一个子类型对象。

3. 1个对象能被1个基类类型的多个不同子类类型的变量所引用。

4. 引用变量类型决定着所能调用的方法。

5. Polymorphic method invocations apply only to overridden instance methods.

 

四. Overriding and Overloading

1. 方法可以被 overridden 或 overloaded, 构造函数只能被overloaded 而不能被overridden。

2. 抽象方法必须被第1个非抽象子类所 overridden。

3. Overriding 方法:

1) 必须具有相同的参数列表、返回类型(从Java5开始,返回类型可以是子类类型)。

2) 不能用更高1级的访问控制符来修饰,但可以用低一些访问控制符来修饰。

3) 不能抛出新的或更广的 checked exceptions,但可以抛出任何unchecked exception 或 范围更小的checked exceptions。

4. final 方法不能被 overridden。

5. 只有能被继承的方法才能被 overridden,私有方法不能被继承。

6. 子类可以通过 super.overriddenMethodName() 在 overridden 方法中调用父类该方法。

7. Overloading 意思是相同的方法名称、不同的参数。

8. Overloaded 方法:

1) 必须具有不同的参数列表。

2) 可以改变返回类型(参数列表仍然需要是不同的)。

3) 可以具有不同的访问控制修饰符、异常。

9. 父类的方法可以被子类 overloaded。

10. 多态只应用于overriding,而不是overloading。

11. 对象类型决定着在运行时调用哪个overridden方法。

12. 引用类型决定着在编译时调用哪个overloaded方法。

 

五. 引用变量类型转换

1. 共有2种类型:向下转换、向上转换。

2. 向下转换:

1) 如果1个引用变量指向的是子类类型对象,则可以将该引用变量类型转变为该子类类型对象。

2) 类型转换时必须使用显式地转换,转换的结果是该引用变量可以访问该子类类型对象的成员。

3. 向上转换:

1) 可以显示地或隐式地转换引用变量类型为父类类型。

2) 它是安全的操作。

 

. 实现接口

1. 实现1个接口时表示遵从它的约定。

2. 通过正确和具体地overriding该接口所定义的所有方法来实现1个接口。

3. 1个类可以实现多个接口。

 

. 返回类型

1. Overloaded 方法可以改变返回类型,而 overridden 方法不能改变返回类型( covariant 类型除外)。

2. 返回类型可以用null作为返回值。

3. 1个数组是合法的返回类型。

4. 当返回类型是原子类型时,任何可以隐式地转化为该返回类型的值都是合法的。

5. 声明为void时,不能返回值,但可以使用 return; 但当有返回类型时则return后必须有值。

6. 可以返回声明类型的子类类型值。

7. 用接口类型作为返回类型时,必须返回接口的实现类型值。

 

. 构造函数和实例化

1. 1个构造函数当new1个对象时被调用。

2. 1个对象的继承树中的每个父类的构造函数都会被调用。

3. 每个类,甚至抽象类,都至少有1个构造函数。

4. 构造函数的名称必须和类名相同。

5. 构造函数不能有返回类型,如果有返回类型,则是方法而非构造函数。

6. 构造函数可以用任何的访问控制修饰符进行修饰。

7. 典型的构造函数执行:

1) 构造函数调用父类的构造函数,父类再调用父类的,直到Object的构造函数为止。

2) Object的构造函数执行并返回其调用者,调用者执行后再返回其调用者,直到实例被创建。

8. 如果没有在1个类中创建任何构造函数,则编译器会创建1个默认的构造函数。

9. 默认构造函数是无参的,并会调用无参的super()。

10. 每个构造函数的第1个状态必须是this()或super()。

11. 编译器会自动调用super(),除非已经调用了this()或super()。

12. 实例成员只有在构造函数运行后才能被访问。

13. 抽象类的构造函数在具体子类实例化时被调用。

14. 接口没有构造函数。

15. 如果父类没有无参构造函数,则必须创建1个构造函数并调用有参的super构造函数。

16. 构造函数不能被继承,所以不能被overridden。

17. 1个构造函数只能被另1个构造函数直接调用,其他情况下都不能直接调用构造函数。

18. 调用this()的一些问题:

1) May appear only as the first statement in a constructor.

2) 参数列表决定着overloaded的构造函数中哪个被调用。

3) 构造函数可以调用构造函数,但需要在某个点上调用super(),否则将引起stack explode。

4) 在1个构造函数里不能既调用this()又调用super(),只能是其一。

 

. 静态

1. 用静态方法来实现不依赖于实例的行为。

2. 用静态变量来保存和特定于类(而非特定于实例)的数据,静态变量只有1份copy。

3. 所有的静态成员都属于类,而不属于任何实例。

4. 1个静态方法不能直接访问1个实例变量。

5. 静态成员通过 类名.成员名 的方式进行访问(用 实例名.成员名 的方式也能访问,但这只是个语法小把戏)。

6. 静态方法不能被overridden,但可以被重新定义。

 

. 耦合和内聚

1. 耦合指的是1个类中所关联的其他类的程度。

2. 1个松耦合设计的系统,类的封装性较好,彼此之间的关联度降低,limit the breadth of API usage。
3. 内聚指的是1个类具有单一的、界限清楚的角色或职责的程度。

4. 1个高内聚的类的成员均具有单一的、界限清楚的角色或职责。

 

附:JAVA中方法和变量在继承中的覆盖和隐藏

 

分享到:
评论

相关推荐

    设计模式——可复用的OO软件

    设计模式——可复用的OO软件

    corejava基础重要知识点总结

    思想简单:面向对象的思想 = OO思想 面向过程:需要人站在计算机的角度去思考问题 面向对象:需要人拿着代码模拟实现生活 类:一组类型相同事物高度抽象之后的集合概念 创建对象的模板 -》 class 对象:类的一...

    Java 图书馆理 Java oo思想

    在IT行业中,Java是一种广泛应用的编程语言,尤其在企业级应用和服务器端开发中占据重要地位。本资源包聚焦于“Java图书馆管理”和“Java面向对象思想”,这两个主题是Java编程中的核心概念。 首先,让我们深入理解...

    Java OO 试题.doc

    Java面向对象编程(Java Object-Oriented Programming,简称Java OO)是Java编程语言的核心特性,它基于类和对象的概念,提供了封装、继承、多态等关键功能,使得代码更加模块化和可重用。 1. **字节码**: Java源代码...

    Head First Java——orel.rar

    《Head First Java》是本完整的面向对象(object-oriented,OO)程序设计和Java的学习指导。此书是根据学习理论所设计的,让你可以从学习程序语言的基础开始一直到包括线程、网络与分布式程序等项目。最重要的,你会...

    java 基础培训.pdf

    ### Java基础培训知识点详解 #### 一、Java入门概述 Java是一种广泛使用的高级编程语言,由Sun Microsystems在1995年推出,现由Oracle公司维护。它以其平台无关性、面向对象、安全性高和可移植性强等特点,在企业...

    SAP ABAP开发学习——第10课:OOALV(视频教程)

    在本课程中,我们将深入探讨SAP ABAP的面向对象技术在ALV(ABAP List Viewer)中的应用,这是SAP ABAP开发学习的第10课,专注于OOALV。这个主题对于任何想要在SAP系统中进行高效数据展现和处理的开发者来说都是至关...

    elevator3.zip_java_java编程_北航oo_北航电梯_电梯

    北航第三次oo作业,在原来傻瓜电梯的基础上增加捎带功能

    《Head First Java》是本完整的面向对象(object-oriented,OO)程序设计和Java的学习指导

    第一册:《Head First Java》是本完整的面向对象(object-oriented,OO)程序设计和Java的学习指导。 第二册:《HeadFirst设计模式》(中文版)共有14章,每章都介绍了几个设计模式,完整地涵盖了四人组版本全部23个设计...

    I:\Java课件\java_base2_oo.ppt

    面向对象编程是Java的核心特性,本课程主要涵盖了...学习以上内容,有助于深入理解Java面向对象编程的基本概念和语法,为编写复杂程序打下坚实基础。通过实践和应用这些知识,开发者可以设计出高效、可维护的软件系统。

    OO真经——面向对象的哲学体系以及科学体系的探讨

    数据和逻辑不是分离的,而是相互依存的。相关的数据和逻辑形成个体,这些个体叫做对象(Object),世界就是由一个个对象组成的。对象具有相对独立性,对外提供一定的服务。所谓世界的演进,是在某个“初始作用力”...

    JAVA语言程序设计教程 Java基础入门教程 杭电Java程序设计课程全套课件 共13个章节 含上机练习题和全部源代码.rar

    03 JAVA语言基础 位运算(共21页) 03 JAVA语言基础(共57页) 04 Java面向对象特性(共41页) 05 高级语言特征(共65页) 06 异常处理Exceptions(共31页) 07 IO输入输出(共30页) 08 AWT图形界面编程 JFC AWT ...

    java面试题从java基础到spring

    Java 编写的程序在编译时并不会直接编译成特定平台的机器码,而是生成一种中间代码——字节码(.class 文件),这种字节码由JVM负责解释执行。因此,只要在不同的操作系统上安装了相应的JVM,就可以运行相同的Java...

    java基础学习课件

    【Java基础学习课件】是Sun公司讲师分享的关于Java编程的课程资料,涵盖了从基础到高级的应用。这个课程旨在帮助学习者系统性地掌握Java编程技能,通过讲解不同的主题来提升开发能力。 1. **软件开发周期 (OO) SDC*...

    大数据的Java基础.pdf

    《大数据的Java基础》课程旨在为那些希望涉足大数据分析领域,特别是对Hadoop感兴趣的初学者提供必要的Java编程基础知识。Java语言自1995年诞生以来,已经从一个主要用于网页小应用的编程语言发展成为服务器端和...

    java oo 设计原则

    Java面向对象设计原则是软件开发中的基石,...在实际编程中,这些原则并不是孤立存在的,它们相互关联,共同构成了面向对象设计的基础。理解并灵活运用这些原则,能帮助开发者构建出更加健壮、易于维护的Java应用程序。

    java基础资料

    "java基础资料"这个主题涵盖了Java语言的基本概念、语法和面向对象的编程原则,这些都是学习Java的基石。 Java的产生源于Sun Microsystems公司的James Gosling等人,他们旨在创造一种可以在各种平台上运行的“Write...

    兰新EIC管理模式——二OO四年经济运营原则及考核、标体系.doc

    兰新EIC管理模式成功地将经济利益原则和团队合作精神结合起来,为企业持续稳定发展提供了坚实的基础。 兰新EIC管理模式的核心理念和成功经验,在2004年之后,也给其他企业带来了重要的启示。它表明,企业管理模式的...

    作业1:Java、C++和Python的OO特性调研报告1

    - Java 和 C++都需要通过关键字(Java 的 class,C++的 class 或 struct)来定义类,类中包含数据成员(fields)和成员函数(methods)。在 C++中,struct 默认成员是公有的(public),而在 Java 和 C++的 class 中...

Global site tag (gtag.js) - Google Analytics