第四章:对象和类
1、在类之间,最常见的关系有:
依赖:即"use-a"关系,例如Order类使用Account类是因为Order对象需要访问Account对象查看信用状态。应该将相互依赖的类减少到最少。它用箭头表示,箭头指向被依赖的那个类,使用虚线。
聚合:即"has-a"关系,也可以说是"关联",聚合关系意味着类A的对象包含类B的对象。它用菱形表示,菱形放在A上
继承:即"is-a"关系,表示特殊和一般的关系。它用三角形表示,如果是实现接口的话,使用的是虚线,三角形放在被继承的类上。
2、并不是所有的类都具有面向对象的特征。例如Math类。
3、对象不会自动被初始化为null,而必须通过调用new或将它们设置为null进行初始化。
java对象变量与c++的引用类似,这种说法是错误的。在c++中没有空引用,并且引用不能被赋值。可以将java对象看成是c++的对象指针。
4、java将时间与日历类分开是一种很好的面向对象设计。Date类中用来比较2个时间点的方法有before和after,它的getDay,getMonth,getYear方法不推荐。GregorianCalendar日历类有很多方法都可用。比如说构造器就有好几种。
Locale.setDefault(Locale.ITALY)这句话放在main函数的第一行可以看到不同地区的程序输出
在c++中带有const后缀的方法是访问器方法,默认为更改器方法。
5、主力类:类中没有main方法,有自定义的实例域和实例方法
6、java中必须注意所有的方法中不要命名与实例域相同名的变量。
在java中必须使用new关键字来创建一个对象,下面的这句话可以在c++中通过。
Employee number("aaa","001");
7、 a.method(b);在java中a被称为隐式参数,b被称为显式参数。
8、目前我写程序还是会出现的一个问题是: java中规定最好不要返回引用可变对象的访问器方法。因为这样会破坏封装性。
如 public Date gmethod(){return date;} 这个毛病我到目前为止还是会犯。如果要想返回引用可变对象,需要进行克隆。如return (Date)date.clone();
9、final修饰符经常用于基本类型和不可变类。比如String类就是一个final类,即String类中的方法不会改变这个String对象。
10、static域被称为类域,它属于类,而不属于任何独立的对象。如System.out常量就是一个静态的,out的类型是PrintStream。值得注意的是System类的setOut方法可以将System.out设置为不同的流。原来是这个方法是一个本地方法,而不是java语言实现的。本地方法可以绕过java语言的存取控制机制。
可以使用对象来调用静态方法。但是最好还是使用类去调用
使用静态方法的情形有:
1、一个方法不需要访问对象状态,其所有参数都通过显示参数提供。如Math.pow
2、一个方法只需要访问静态域。
NumberFormat类使用factory方法产生不同风格的格式对象。
在C++中使用::操作符访问自身作用域之外的静态域和静态方法。
static方法的意义: 最开始是在c中被用的,表示退出一个块后依然存在的局部变量。接着在c中的第二种定义是不能被其他文件访问的全局变量和函数。接着在c++中得到重用表示属于类但是不属于类对象的变量和函数。
11、java程序设计中,方法参数的使用情况:
(1)、一个方法不能修改一个基本数据类型的参数(即数值型和布尔型)
(2)、一个方法可以改变一个对象参数的状态
(3)、一个方法不能实现让对象参数引用一个新的对象。
c++中有值调用和引用调用2种,引用参数标有&符号。
12、方法签名包括:方法名,参数类型,但是不包括返回类型。java允许重载任何方法,而不只是构造器方法。
13、java语言中能够让一个构造器调用另外一个构造器,但是c++中是不允许的。
14、java调用构造器的过程:
(1)、所有的数据域被初始化为默认值
(2)、按照在类声明中出现的顺序,依次执行所有域初始化语句和初始化块
(3)、如果构造器第一行调用了第二个构造器,则执行第二个构造器主体
(4)、执行当前这个构造器的主体
15、java有自动的垃圾回收机制,不需要人工回收内存,所以java不支持析构器。
16、java中可以将类导入进来,然后进行使用,有的时候可以直接在类中写上类名.方法名。但是C++不支持这种方式,它必须使用#include将外部特性的声明加载进来,因为C++编译器无法查看任何文件的内部。在C++中与包机制类似的是命名空间。
17、Window类中有很多域没有加上private关键字修饰。
18、java类的设计技巧:
(1)、一定要将数据设计为私有
(2)、一定要对数据进行初始化
(3)、不要在类中使用过多地基本数据类型:用类代替多个相关的基本数据类型的使用。
(4)、不是所有的域都需要独立的域访问器和域更改器
(5)、使用标准格式进行类的定义
(6)、将职责过多的类进行分解
(7)、类名和方法名要能够体现他们的职责
分享到:
相关推荐
史上最全的Java核心技术总结,涵盖了jvm、java核心技术、java并发编程、计算机网络等重点面试知识。通过总结面过阿里、网易、美团、京东、一二面无压力。
这是一套Java核心技术基础使用手册,包含Java 基础核心总结、Java核心基础、Java核心知识、Java 基础面试题总结等,内含最强 Java 核心知识点整理及思维导图,需要的朋友可下载试试! Java是一门编程语言,Java发展...
面向对象技术总结 corejava高级特性总结 接口学习总结 异常和内部类 集合框架学习总结....
Java 核心技术经验总结
史上最全的Java核心技术总结.zip
JavaCore 是对 Java 核心技术的经验总结。.zip
主要是对JAVA技术基础进行全面总结。通过本书可能对JAVA有一个大概的了解。
Java多线程核心技术:理解多线程、在Java中实现多线程、线程的生命周期、线程的优先级、线程的同步、线程的阻塞、守护线程、线程组、线程池、总结。
Java的基础总结和学习笔记,包括Java核心技术点和常见知识点。同时提供了Java基础原理的代码实现
我也在学习中,就我的学习经验,给出以下小结。(注意:个人观点,仅供参考,欢迎指正。)??1.什么是模式???模式,即pattern。其实就是解决某一类问题的方法论。你把解决某类问题的方法总结归纳到理论高度,那就是...
结合大量实例,全面讲解Java多线程编程中的并发访问、线程间通信、锁等最难突破的核心技术与应用实践 Java多线程无处不在,如服务器、数据库、应用。多线程可以有效提升计算和处理效率,大大提升吞吐量和可伸缩性,...
包含了JVM、Redis、Zookeeper、RabbitMQ等核心知识总结,帮你快速掌握分布式技术
《Java 基础核心总结》 Java 概述 什么是 Java2 Java 的特点Java 开发环境 JDK JRE Java 开发环境配置 Java 基本语法 数据类型基础语法运算符 Java 执行控制流程条件语句 if 条件语句 if...else 条件语句if...else ...
corejava的知识点总结,重点,难点
底层的功臣:JVM = java虚拟机 = 1 + 2 + 3 = 秘书 + 保镖 + 翻译 = 秘书 = 类加载器 = ClassLoader = 保镖 = 字节码校验器 = ByteCode Verifier = 翻译 = 解释执行器 = Interfreter 2:安全 健壮 电力 电信 ...
Java核心基础知识总结,含思维导图,包含Java基本语法,面向对象,接口和抽象类,异常,内部类,集合,泛型,反射,枚举,I/O,注解等Java基础核心知识,总结全面,内容丰富,欢迎下载。 如果对你有用,麻烦点个收藏...
《Java2核心技术》笔记 作者:叶加飞 加拿大.达内科技 (上海中心) 笔记包含以下文档: 面向对象技术总结.pdf corejava高级个性总结.pdf 接口学习总结.pdf 异常和内部类.pdf 集合框架学习总结.pdf GUI和AWT事件模型....
Java中没有 3、移位操作符右边的参数要先进行模32运算(当左边的变元是long型,则模64),如1<<35 = 1<< 3 = 8。浮点运算的中间结果程度是不一致的。有些处理器适用80bit浮点存储器,有些则使用64bit、80bit。直到...
尚硅谷_Docker_DockerFile案例-自定义的tomcat9.avi 29_尚硅谷_Docker_DockerFile案例-自定义的tomcat9上发布演示.avi 30_尚硅谷_Docker_DockerFile小总结.avi 31_尚硅谷_Docker_安装mysql.avi 32_尚硅谷_Docker_...
FILTER AOP IOC EXCEPTION LOG4J MULTICONTROLLER 一些知识点总结,对初学者很有启发作用