java学习笔记(Core Java)4 对象与类

第四章 对象与类
oop三个特征:对象的行为、状态、标识
类之间关系:依赖,聚合,继承
依赖:一个类的方法操纵另一个类的对象。(尽量减少这种耦合情况)
聚合(has-a)一个类作为另一个类的变量而存在
继承(is-a)

如果只声明一个类变量,而没有在堆空间中开辟没存,
那么这个变量就不能调用类中的方法
因为这个变量没有引用对象

!!一个对象的变量并没有实际包含一个对象,而仅仅引用了一个对象

Data data;
等同于:
Data *data; //它只代表一个指针,而不拥有对象数据

get/set 访问器

一个源文件中只有一个公有类

javac <==> make 对包含main方法的类编译,运行时会自动编译其他相关类
也可以使用通配符*

c++在类内部定义的方法为内联方法
java中,虚拟机会自动的监视调用经常被调用、可优化的方法

不要编写返回引用可变对象的访问器方法,如果要使用,应当返回一个clone副本

class Employee
{
。。。
private Data getHireDay();
{
return hireDay.clone(); //防止给其他Data变量赋值时的混肴状态
}
}

final和static
/////////////////////////////
static:
c:保留局部变量数据。数据具有本地隐藏性
c++:该变量属于整个类而不是属于具体对象
/////////////////////////////

main() ;测试技巧:每个类都可以有一个main方法,并且可以单独运行一个类。运行程序则可以 java Application ,其他非启动类类中的main方法都不会运行

java都是值传递
一个方法不能修改一个基本数据类型的参数(数值、布尔)
一个方法可以改变一个对象参数的状态
一个方法不能让对象参数引用一个新的对象

方法名与参数列表共同组成方法签名

java初始化对象: 再回来看看!!
重载构造器
this调用其它构造器
无参数构造器
对象初始化块
静态初始化块
实例域初始化

对象析构:finalize 不推荐 不知道什么时候调用
包与引入包 import 类似于引用命名空间
package == namespace
import == using

静态导入

类设计技巧
1)保证数据私有
2)对数据初始化
3)不要在类中过多的使用基本类型(可以使用聚合关系代替)
4)不是所有的域都需要独立的访问器与更改器
5)将职责过多的类进行分解
6)类名与方法名应该能体现他们的职责

时间: 2024-10-14 00:44:17

java学习笔记(Core Java)4 对象与类的相关文章

java学习笔记(Core Java) 6接口与内部类

接口(实现C++的多继承,同时避免了虚继承)深拷贝与浅拷贝内部类代理 一.接口与泛型接口:提供一组行为规范public interface Comparable<T>{ int compareTo(T other)}...int conpareTo<Employee other> //指定T 接口中所有的方法自动属于public所有的域自动为public staic 接口中的域自动声明为 public static final 继承接口的关键字:implements1.接口提供方法

java学习笔记(Core Java) 9 泛型

集合接口一.引言:接口与实现分离,使用队列举例//提供接口规范interface Queue{...}//具体实现class LinkedListQueue<E> impements Queue<E> {...}class CircularArrayQueue<E> impements Queue<E> {...} Queue<Customer> e = new LinkedListQueue<Customer> 二.迭代器1.集合类

java学习笔记(Core Java) 8 泛型

泛型一.定义一个泛型类public class Pair<T>{ private T _first; public Pair(T first) {this._first = first;} public T getfirst() {return _first;}}java中类型变量使用大写字母且比较短E:元素类型 K,V 表的关键字与值的类型 T(U/S)任意类型 泛型方法:要么返回类型是泛型,要么参数是泛型public static <T> getMiddle(T... a){

java学习笔记3——java关键字

java学习笔记3——java关键字 虽然老师说不用刻意的去记忆,但是我还是在网上找到了非常详细的注解,再次收藏 关键字的类型表: 各个关键字的详细注解和实例,按首字母排序: 1.abstract abstract 关键字可以修改类或方法. abstract 类可以扩展(增加子类),但不能直接实例化. abstract 方法不在声明它的类中实现,但必须在某个子类中重写. -示例- public abstract class MyClass{ } public abstract String my

非专业码农 JAVA学习笔记 3 抽象、封装和类(2)

(2).静态域-放在内存公共存储单元,不放在特定的对象,用static修饰 (续上一篇<非专业码农 JAVA学习笔记 3 抽象.封装和类(1)>...) (3).静态初始器-由static引导的一对大括号括起来的语句组,作用跟构造函数相似 (4).最终域-final引导的,值在整个过程都不发生改变的 5.方法 (1)方法的定义:修饰词1 修饰词2…返回值类型 方法名(参数) throw[异常列表] 这里个人经验就是注意定义了返回值的方法,要在方法体里面增加return 该类型变量:此外遇到if

Java学习笔记(Java语言规范,API,JDK,IDE)

Java语言规范:java.sun.com/docs/books/jls 三个版本的API:J2SE J2EE J2ME 1. J2SE 客户端独立应用程序或者applet 2. J2EE 服务端应用程序 [Java Servlets&JavaServer Page] 3. J2ME 移动设备变成 JDK为Java开发提供一个开发环境(IDE) Java学习笔记(Java语言规范,API,JDK,IDE)

疯狂Java学习笔记(56)------------对象序列化

所谓对象序列化就是将对象的状态转换成字节流,以后可以通过这些值再生成相同状态的对象! 对象序列化是对象持久化的一种实现方法,它是将一个对象的属性和方法转化为一种序列化的格式以用于存储和传输,反序列化就是根据这些保存的信息重建对象的过程. java对象序列化机制一般来讲有两种用途: 1.需要将对象的状态保存到文件中(存储),而后能够通过读入对象状态来重新构造对象,恢复程序状态 2.使用套接字在网络上传送对象的程序来说,是很有用的(传输). 我们通过让类实现java.io.Serializable

非专业码农 JAVA学习笔记 3 抽象、封装和类(1)

抽象.封装和类(1)待续 首先声明,今天接了太多个电话,两个小时看书被打断多次,缩减为一个小时.不管了,走马观花也要看完几个小节: (一)抽象与封装:抽象-抽取和研究实际性问题加以考察(抽象-尼玛抽出对象…) 封装:相关操作封存在命名空间.类等 (二)java的类: 1.系统定义的类(用于import中引入) 类名 作用 Java.lang 语言包,默认加载 Java.io, In out:文件数据流操作产生的输入输出流 Java.util 低级工具,如时间data类,变成数组vector类,h

Java学习笔记-7.Java IO流

一.输入/输出流 1.流:不同类型的输入.输出源    数据流:输入或输出的数据 Java数据流的所有接口和类都是在java.io包中定义的,因此应在程序开头加入 import java.io.* 2.流的分类: (1)从流的流动方向来看,可以将IO流分为输入流和输出流 输入流:数据信息从某个地方流向程序中 输出流:数据信息从程序中发送到某个目的地 (2)从流的数据处理单位来看,可以将IO流分为字节流和字符流 字节流:以字节方式处理的二进制数据 字符流:以字符方式处理的数据流(Java使用Uni

非专业码农 JAVA学习笔记 2 java语言基础

java语言基础 (一)程序构成 略 (二)数据类型变量和常量 1.数据类型(与c#差不多) 布尔bool 8位 字节byte 8   -128-127 字符char 16 短整型Short 16 Int 32 Long 64 Float 32 Double 64 2.标识符-变量常量方法对象和类的名字标记 字母数字 还有两个特殊符号_ 和$ 字母下划线或者美元符号开头 3.常量 4.变量 (三)表达式 1.赋值和强制类型转换 Tostring()弱转换 类型=(类型)变量:a=(int)b;a