JAVA2核心技术卷1 对象和类
1. 面向对象程序设计概述
1) 概述
2) 词汇
i. 封装:将数据和行为结合到一个包中,并对对象的使用者隐藏了数据的实现方式。
ii. 方法:操纵数据的过程
iii. 封装:就是产生一个“黑盒”
3) 对象
i. 对象的行为状态和标识
4) 类之间的关系
i. 依赖
ii. 聚合(相当与包含着 has a)
iii. 继承(相当与他的子项目 is a)
5) OOP与传统技术的对比
2. 使用现有的类
1) 对象和对象变量 i. 使用对象之前必须先要构造对象,构造器的名字和类的名字相同,要想构造一个对象,需要在构造器上加上NEW操作符号。一个对象变量并没有实际包含一个对象,而仅仅引用一个对象。 ii. Date deadline=new Date();有两个部分。(1)表达式new Date() 构造了一个date类型的对象 (2)并且他的值是对新创建对象的引用,这个引用被存储在变量deadline中。2) JAVA 库中的GregorianCalendar类 i. GregorianCalendar类比DATE 类所包含的方法要多很多,特别是很有用的构造器。 ii. New GregroianCalendar(); iii. New GregroianCalendar(1999,11,31)可以通过年月日来构造一个表示某个特定时期午夜的日历对象。有些怪异的是月份是从0开始的。3) 更改器方法和访问器方法 i. 从某个特定的GregorianCalendar对象内部的日期中获得当前的月日年1. GregorianCalendar now=new GregorianClaendar();2. Int month=new.get(Calendar.Month);3. Int weekday=new.get(Calendar.DAY_OF_WEEK); ii. 对实例域作出的修改的方法被称为更改器方法,如set ,add 1. deadline.set(Calendar.YEAR,2001);2. deadline.add(Calendar.MONTH,3); iii. 仅仅访问实例域而不加修改的方法称为访问器方法 如上面的get2. 用户自定义的类1) 一个employee类class ClassName { constuctor1//构造器 method1//方法 field1//域 } i. 简单的employeeclass Employee { //构造器 public Employee(String n,double s,int year,int month,int day) { } }
2) 多个原文件的使用
3) 解析Employee类
4) 从构造器开始
5) 隐式参数和显式参数
6) 封装的优点
7) 基于类的访问权限
8) 私有方法
9) final实例域
4. 静态域和静态方法
1) 静态域
2) 常量
3) 静态方法
4) Factory 方法
5) Main方法
5. 方法参数
6. 对象构造
1) 重载
2) 默认域初始化
3) 默认构造器
4) 显示初始化
5) 参数名
6) 调用另外一个构造器
7) 初始化块
8) 对象析构与 finalize方法
7. 包
1) 类的导入
2) 静态导入
3) 将类放入包中
4) 虚拟机如何定位类
8. 文档注释
1) 注释的插入
2) 类注释
3) 方法注释
4) 域注释
5) 通用注释
6) 包和概述注释
7) 注释的抽取
9. 类设计技巧
1) 一定将数据设计为私有
2) 一定要将数据初始化
3) 不要在类中使用过多的基本数据类型
4) 不是所有的域都需要独立的域访问器和域更改器
5) 使用标准格式进行类的定义
6) 将职责过多的类进行分解
7) 类名和方法名要能够体现他们的责任
相关的代码:
public class Xunhuan ... { public static void main(String[] args) ... { for ( double x = 0 ;x != 10 ;x += 0.1 ) //注意这样是制造一个死循环的 ... { System.out.println( " my test " + x); } } }
import java.util. * ; public class InputTest ... { public static void main(String[] args) ... { Scanner in = new Scanner(System.in); // get first input System.out.print( " what is your name? " ); String name = in.nextLine(); // get Second input System.out.print( " How old ar you? " ); int age = in.nextInt(); // display output on console System.out.println( " Hello, " + name + " .Next year, you'll be " + (age + 1 )); System.out.printf( " %,.2f " , 100000.0 / 3.0 ); } }
import java.util. * ; public class Mydate ... { public static void main(String[] args) ... { Date mydate = new Date(); System.out.println(mydate); } }
public class Message ... { public static void main(String[] args) ... { if (args[ 0 ].equals( " -h " )) System.out.print( " Hello, " ); else if (args[ 0 ].equals( " -g " )) System.out.println( " Goodbye, " ); for ( int i = 1 ;i < args.length;i ++ ) System.out.print( "" + args[i]); System.out.println( " ! " ); } }
import java.util. * ; public class Retirement ... { public static void main(String[] args) ... { Scanner in = new Scanner(System.in); System.out.print( " How much money do you need to retire? " ); double goal = in.nextDouble(); System.out.print( " How much money do you in every year? " ); double payment = in.nextDouble(); System.out.print( " interest rate in % " ); double interestRate = in.nextDouble(); double balance = 0 ; int years = 0 ; while (years <= 33 ) ... { balance = balance + payment; double interest = ( 1 + interestRate / 100 ); balance = balance * interest; if (balance >= goal) break ; years ++ ; } System.out.println(" You can retire in " + years + " years " ); } }