首先根据客户需求抽象出业务对象;然后对需求迕行合理分层,构建相对独立的业务模块;之后设计业务逻辑,利用多态、继承、封装、抽象的编程思想,实现业务需求;最后通过整合各模块,达到高类聚、低耦合的效果,从而满足客户要求。
3. 面向对象概念
- 类型(类):指一个名词概念,如:客人、菜品、厨师。
- 引用(变量):指引用具体概念实例的代词,如:某人、特价菜
- 对象(东西):指具体概念的个体实例,如:张三丰是个人、一盘大盘鸡
- 行为:方法
- 多态:在具体情形下会发生变化的现象。例如:一只动物,可以是“一只猫”、“一只狗”,多态的。
- 封装:仸何对象实例都是尽可能封装, 减少暴露,它的实现细节对你是透明的。
- 继承:通过继承实现代码复用。Java中所有的类都是通过直接或间接地继承java.lang.Object类得到的。继承而得到的类称为子类,被继承的类称为父类。子类不能继承父类中访问权限为private的成员变量和方法。子类可以重写父类的方法,及命名与父类同名的成员变量。但Java不支持多重继承,即一个类从多个超类派生的能力。
- 引用变量与对象的创建过程(该部分为参考其他资料感觉讲的比较透彻)
public class BookDemo {
public static void main(String[] args) {
//声明引用book
//第5行
Book book;
//创建对象
//第6行
book = new Book();
//第7行
book.name="计算机编程";
//第8行
System.out.println(book.name);//输出结果是计算表编程
//第9行
book = new Book();
//第10行
book.name="Think in java";
//第11行
System.out.println(book.name);//输出Think in java
}
}
class Book{
String name;
String auther;
double Price;
}
计算机执行 Java 程序时会在内存中开辟一块栈内存(stack)空间。其实在程序运行期间,JVM 迓开辟了一个堆内存(heap)空间。
栈内存空间的存储特点是“后进先出”,堆内存空间的存储特点和栈不同,类似于一盘散沙,随处可以“堆放”。
编程好习惯:
一个 class(类)写在一个.java 文件,尽量不要把多个类写到一个.java 文件中
注:
- 此时堆内存中有两个对象,引用变量 book 指向新创建的对象
- 原来引用的对象等待垃圾回收
Java 的内存管理与分配
ü 栈是一块 Java 使用内存区域,使用的方式:LIFO(后来者居上)
ü 堆也是一块 Java 使用内存区域,使用方式:随机分配
局部变量与堆对象空间分配
ü Java 局部变量和方法参数在栈中分配,大小是按照变量的类型分配
ü 对象在堆中分配,按照类中声明属性(实例变量)分配空间
变量类型与分配
ü 变量分为:基本类型和引用类型
ü 基本类型变量的空间大小:就是基本类型的空间大小,值是基本类型的值
ü 引用变量的值是一个对象的地址值,引用变量通过地址引用了一个堆对象
ü 引用类型变量的占用空间大小和值管理是“透明的(不可看见)”由 Java 系统管理:变量占用空
间以及值的管理,都是透明的
构造方法(构造器)要点:
ü Java 中的构造器(构造方法)声明在类内部。
ü 方法名与类名一致的方法叫构造方法
ü 构造方法不能声明返回值类型。
ü 构造方法可以包含参数,参数一般是创建对象实例必须依赖的条件(前提条件)。
public class Person{
String name;
String sex;
//构造器
public Person(String name,String sex){
this.name = name;
this.sex = sex;
}
}
new 运算:创建对象实例(共 3 步)
第 1 步 根据类的属性在堆中分配对象空间,并且自动初始化实例变量
public class CreateDemo {
public static void main(String[] args) {
Person p = new Person("luqh","女");
System.out.println(p.name+" "+p.sex);
}
}
第 2 步 根据参数类型调用构造器
public class Person{
String name;
String sex;
//构造器
public Person(String name,String sex){
this.name = name;
this.sex = sex;
}
}
public Person(String name,String sex){
this.name = name;
this.sex = sex;
第 3 步 new 运算迒回对象的引用地址
public class CreateDemo {
public static void main(String[] args) {
Person p = new Person("luqh","女");
System.out.println(p.name+" "+p.sex);
}
}
this 是对当前对象的引用,是运行期间当前对象本身。
ü 可以使用 this 明确的访问当前对象的属性戒者方法,类似于"我"
ü this() 可调用本类的其他构造器, 可以使用构造器的重用简化代码的实现。
ü this() 必须写在构造器的第一行!因为在构造器之前是没有对象的。
例子:this调用本例构造器
在Person(String name)构造哦方法中调用了Person(String name,String sex)构造方法
class Person{
String name;
String sex;
public Person(String name){
this(name,name);
}
//构造器
public Person(String name,String sex){
this.name = name;
this.sex = sex;
}
}