概记:
面向对象的特性:封装,继承:从父辈继承的特点,多态:不同子女有各自的特点
软件开发流程:提出需求---->可行性分析---->需求分析---->概要设计(框架等)---->详细设计---->编码实现----->测试、对接,如不行再进行需求分析
类与对象
1、类(class):是一对具有相同属性、操作和关系的同类事物的描述,是抽象的,概念上的定义。
2、对象(Object):是实际存在于某个类的现实个体,因而也称为实例
整理:
一、面向对象的三大特性
封装 : 将其信息属性和方法具体实现隐藏起来,只提供调用方法的接口,既封装。
继承: 将一个已有类中的属性和方法保留,可再加上自己特有的属性和方法形成一个新类,既继承。(从父辈继承的特点)
多态: 指同名但有不同的具体实现的多个方法同时存在一个程序中。有两种是方法:重载和覆盖。(不同子女有各自的特点)
二、类与对象
(一)、定义
类(Class)是对一组具有相同属性、操作和关系的同类事物的描述,是抽象的、概念上的定义。
对象(Object)是实际存在的该类事物的每个个体,因而也称实例(instance)。
(二)、抽象步骤
从现实中抽象出类分三步:
比如建立一个宠物商店
1、找出他的种类:如狗、猫
2、找出它的属性:如毛色
3、找出它的行为
(三)、类的定义
实例:
(四)、对象的创建
A、对象的声明
类的名字 对象的名字 Person p1;
B、对象的实例化和初始化 new关键字实例化已经声明的对象,并在堆中分配内存空间,
Person p1 = new Person(“Tom”,0);
当一个对象被创建时,会对其中各种类型的成员变量自动进行初始化赋值。
(五)、对象的使用
1、对象的调用方法: 对象名.变量名 对象名.方法名
2、例子
class TestPerson{
public static void main(String[] args){
Person p1 = new Person();
Person p2 = new Person();
p1.age = 30;
p1.shout();
p2.shout();
}
}
3、内存分配情况
4、程序片断分析
{
Person p1 = new Person(); //
创建一个新对象并分配内存空间, 对象句柄为p1;
Person p2 = p1; //
声明一个新对象句柄p2,但指明p2 和p1用同一个对象(内存空间)
Person p3 = new Person(); //
创建另一个对象并分配内存空间, 对象句柄为p3;
b1 = ( p1==p2);
b2 = (p1.equals(p2));
b3 = (p1=p3);
b4 = (p1.equals(p3))
}
5、对象的比较
equals和 == 的应用
1>object1.equals(object2)
比较两个引用数据类型句柄所指对象的内容是否一样
是比较两个对象,而非两个基本数据类型的变量
2>object1 == object2
比较两个引用数据类型句柄是否是指向同一对象,即这两个句柄所指向的内存地址是否一样。
3> 比较两个相同基本数据类型的值 基本数据类型的直接用“==”来比较两个值是否相等。
int a = 3,b=3; boolean c = (a==b); c = true;
三、构造方法
(一)、定义
构造器:专门用来创建对象时调用的方法
(二)、特点
特点: 具有与类相同的名称;
不含返回值; 不能在方法中用return语句返回一个值。
(三)、作用
为对象进行初始化(成员变量);
(四)、例子
(五)、构造方法的重载
1、构造器重载的两个要求:
符合构造器的特点 :
1>与类名相同
2>无返回值,
3>不能定义为void
4>不能用return返回值
2、 符合方法重载的特点
1>参数个数不同
2>参数类型不同
(六)、构造器的细节问题
每个类都至少有一个构造器,如果程序中没有定义构造器,JVM会在编译时自动生成一个不带参数也无方法体的构造器。
如: public Person(){}
如果自己在类中定义了带参数的构造器,那么JVM就不在生成不带参数的空构造器了。我们在实例化的时候也只能通过自己定义的构造器形式来创建一个对象。
如: Public p = new Public(“Tom”);
四、类变量与实例变量
static
(一)、定义
类变量:是在类中以static为修饰符的成员变量
实例变量:类中不以static为修饰符的成员变量
(二)、实例与特点
Class Student{
int a; //实例变量 static
int b; //类变量 }
特点: 类的对象之间共享类变量,实例变量是每个类私有的 类变量可通过类名.类变量名或对象名.类变量名来方法;实例变量只能通过对象名.实例变量名来访问;
1、static可以用来修饰属性、方法和代码块
2、static修饰的属性和方法称为类属性(类变量)、类方法
3、不使用static修饰的属性和方法,属于单个对象,通常称为实例属性(实例变量)、实例方法
4、static修饰的变量和方法可以通过类名和对象名访问,而不用static修饰的变量和方法只能通过对象名访问
(一)、在类中变量以final作为修饰符的变量称为常量
eg: final int MAX = 99;
(二)、特点:
1、常量名的所有字母必须大写
2、常量声明时必须初始化
3、常量只能被对象访问但不能改变它的值
五、类的方法
(一)、Java中将类似C/C++中的“函数”称为“方法”,表示“做某些事情的方式”。
(二)、方法的组成:名称、参数、返回值和方法体
returnType methodName(/*Argument list*/)
{
/* Method body */
return value; }
returnType:调用方法后返回的数据类型。
Argument list:定义传给方法的信息的类型和名称
方法名和参数列表共同唯一地标识出某个方法。
(三)、
Java中的方法只能作为类的一部分来创建,通过对象来调用。