1.万物皆对象,现实中的(狗,建筑物,服务等),都可以转为JAVA中的对象(类),因为类描述了具有相同特性(成员变量)和行为(方法或功能)的对象集合,所以一个类实际上也是个数据类型。
每个对象都有个接口(如下图)。
灯的接口定义 开,关,调亮,调暗的方法,创建新类即可具体实现该接口。
对象的引用“lt”
Light lt = new Light();
lt.on();
2.Java中的4种访问制权限(被隐藏的具体实现):
(1).public:最大访问控制权限,对所有的类都可见。
(2).protect:同一包可见,不在同一个包的所有子类也可见。
(3).default:包访问权限,即同一个包中的类可以可见。默认不显式指定访问控制权限时就是default包访问控制权限。
(4).private:最严格俄访问控制权限,仅该类本身可见,对外一切类都不可以访问(反射机制可以访问)。
3.面向对象编程中两种对象组合方式——is-a 和 has-a:
(1).is-a组合:一个类继承具有相似功能的另一个类,根据需要在所继承的类基础上进行扩展。
优点:具有共同属性和方法的类可以将共享信息抽象到父类中,增强代码复用性,同时也是多态的基础。
缺点:子类中扩展的部分对父类不可见,另外如果共性比较少的时候使用继承会增加冗余代码。
(2).has-a组合:has-a组合是在一个类中引用另一个类作为其成员变量。
如新的类:汽车,可以有引擎,方向盘,轮胎等组合,电脑主板由CPU,内存卡,显卡来组合。
优点:可扩展性和灵活性高。在对象组合关系中应优先考虑has-a组合关系。
缺点:具有共性的类之间看不到派生关系。
4.继承
当一个新类与原有的类相似,可以让新类继承于原有的类,原有的类就是父类(基类),新类为子类(导出类), 子类可以加新方法,也可以覆盖重写父类的方法,高拓展性,高灵活度。如果子类只是继承而不做任何操作,那就跟父类没任何区别,子类就没什么意义。
如下图
35 几何(shape)为父类,有几何图形共有的属性尺寸,颜色,位置等,还可以被绘制,擦除等。
圆形,长方形,三角形都可继承shape,同时也拥有了父类的属性和方法,三角形还增添了垂直翻转的新方法。
36 还可重写draw()和erase();
5.多态:
在面向对象编程中,子类中拥有和父类相同方法签名的方法称为子类方法覆盖父类方法,当调用子类方法的某个操作时,不必明确知道子类的具体类型,只需要将子类类型看作是父类的引用调用其操作方法,在运行时,JVM会根据引用对象的具体子类类型而调用应该的方法,这就是多态。
多态的基础是java面向对象编程的晚绑定机制。编程中有如下两种绑定机制:
(1).早绑定:一般在非面向对象编程语言中使用,在程序编译时即计算出具体调用方法体的内存地址。
(2).晚绑定:面向对象编程语言中经常使用,在程序编译时无法计算出具体调用方法体的内存地址,只进行方法参数类型和返回值类型的校验,在运行时才能确定具体要调用方法体的内存地址。
6 .java单继承的优点:
相比于C++的多继承,java只支持类的单继承,java中的所有类的共同基类是Object类,Object类java类树的唯一根节点,这种单继承有以下好处:
(1).单继承可以确保所有的对象拥有某种共同的特性,这样对于JVM虚拟机对所有的类进行系统级的操作将提供方便,所有的java对象可以方便地在内存堆栈中创建,传递参数也变的更加方便简单。
(2).java的单继承使得实现垃圾回收器功能更加容易,因为可以确保JVM知道所有对象的类型信息。
7.选择容器对象两个原则(指JAVA中的集合或数据结构):
(1).容器所能提供不同的类型的接口和外部行为是否能够满足需求。
(2).不同容器针对不同的操作效率不同。
所以 按需选择适合的高性能容器(前提是知道集合的内部各项功能的性能)
8.类型转换:
Java中有两种常见的类型转换:向上类型转换(upcast)和向下类型转换(downcast):
(1).向上类型转换(upcast):
向上类型转换是将子类对象强制类型转换为父类类型,经典用法是面向对象的多态特性。向上类型转换时,子类对象的特性将不可见,只有子类从父类继承的特性仍然保持可见,向上类型转换时编译器会自动检查是否类型兼容,通常是安全的。
(2).向下类型转换:
向下类型转换是将父类类型强制转换为子类类型,转换过后父类中不可见的子类特性又恢复可见性,向下类型转换时,编译器无法自动检测是否类型兼容,往往会产生类型转换错误的运行时异常,通常不安全。
相关推荐
### Java编程思想笔记知识点概述 #### 第 1 章 对象导论 在这一章节中,主要介绍了Java中的基本概念——对象。对象是面向对象编程的核心,它封装了数据和行为。本章首先解释了对象的概念,接着讨论了如何创建对象...
《Java编程思想》是一本深入浅出介绍Java编程的书籍,这份读书笔记旨在提炼书中核心概念,帮助读者理解和掌握Java编程的关键点。 首先,对象导论阐述了面向对象编程(OOP)的优势,相比过程性语言,OOP使得程序更...
在深入探讨《Java编程思想》中的知识点之前,我们首先要理解Java的核心概念——面向对象。这体现在标题和描述中,即“对象导论”和“一切都是对象”。 在Java中,对象是类的实例,类是对象的蓝图。当我们谈论“创建...
《中文版Thinking in Java 4th编程思想》是学习Java编程的重要参考资料,它深入浅出地介绍了面向对象编程的核心概念。下面将详细解读其中的主要知识点。 1. **对象导论** - **万物皆对象**:Java编程的核心是对象...
《Java编程思想》笔记 看了两个月,书中有穿插着一些设计模式应用到实际的例子中。这本书不会一味地讲语法,更多的是会讲一些Java的设计思想,比如他不会一开始就教你怎么用泛型,而是先介绍为什么会出现泛型,没有...
在其职业生涯中,Bentley 培养了许多杰出的学生,如Tcl语言设计者 John Ousterhout、Java语言设计者 James Gosling 和《算法导论》的作者之一 Charles Leiserson。Bentley 因其在算法领域的贡献而荣获多个奖项,包括...
2. **经典算法书籍**:例如《算法导论》、《挑战程序设计竞赛》等,这些书籍提供了深入的算法理论和实践案例,适合系统性学习和掌握算法思想。 3. **算法题解析和代码**:在刷题过程中,重要的是理解每道题目的解题...