面向对象思想
为了更好地理解面向对象的思想和方法,先介绍一些面向对象的基本概念。
面向对象开发方法主要在于模拟人们理解和处理客观世界的方式来分析问题和解决问题。认为客观世界是由各种各样的事物或实体组成,每个事物或实体都可用一个对象来表示。
因此,在面向对象的程序中,客观系统被描述成一系列对象,由这些相互联系、相互作用的对象来构成程序系统。
对象
现在让我们深入了解什么是对象。看看周围真实的世界,会发现身边有很多对象,车,狗,人等等。所有这些对象都有自己的状态和行为。
拿一条狗来举例,它的状态有:名字、品种、颜色等,行为有:叫、摇尾巴和跑等。
对比现实对象和软件对象,它们之间十分相似。
软件对象也有状态和行为。软件对象的状态就是属性,行为通过方法体现。
对象是具有特殊属性和行为方式的实体。
属性(状态)。
方法(行为方式)。

类
类是对现实世界中具体事物的抽象描述,一般用符号class表示。
类是一个模板,它描述一类对象的行为和状态。
类可以定义为数据和方法的集合。
数据为成员变量,用来保存状态。
方法为成员方法,是对类的状态的控制。

类与对象

面向对象的特征
1.封装
把对象的属性和行为结合成一个独立的单位
好处:外界不能直接访问或修改这些数据和代码,只能通过对象提供接口函数来改变或获取对象的属性数据
2.继承
从已存在的类派生出新的类,前者称为父类,后者叫做子类。
好处:通过继承关系可形成一种类层次结构,叫做继承结构。体现了类的扩展性
3.多态
不同类的对象,可调用同一个方法,实现不同的功能
好处:提高代码复用性,提高程序设计的灵活性和效率
类的定义
类的定义格式为:

成员变量
1、成员变量为类的基本单位,用来保存对象的状态。
2、成员变量类型
简单类型—基本类型
引用类型—对象
3、成员变量定义:
<访问修饰符> <变量类型><变量名称>=<具体值>;
private int num = 5 ;
public String name=“tom”;
成员方法
方法必须有名称,参数列表,实现体
名称可以在遵循条件的情况下任意定义,需要符合标识符规范。
参数列表可以为空
实现体为一对大括号包含的逻辑代码块。里面为逻辑代码,可以为空。
方法基本语法:
<访问修饰符> <返回类型><方法名称>(参数列表){实现体}
参数列表写法:类型 名称,类型 名称,…….
public String getName(String sex,int age) {
String tmp=null;
tmp=“tom”;
return tmp;
}
方法名称命名应该有意义(自明性)
方法的返回类型可以简单类型、引用类型(类),也可以没有返回值(void)
如果方法名称相同,则参数列表不能相同。(参数类型不同,或者参数个数不同,如果参数类型和个数都相同,那么顺序不能相同)
方法一定要有实现体。可以没有逻辑代码。
创建对象
Student stu = new Student();
<类名1><引用变量名称>=<关键字><类名2>();
类名1、类名2必须相同,或者1为2的父类。
引用变量名称要符合变量命名规范
关键字:new
赋值号:=
结束标志:;
注意:class类型声明的变量不是对象本身,而是对象的引用(reference)。引用变量默认值为null,赋值后值的默认形式为类名@hashcode值
成员变量的调用
1、在本类中调用
直接使用变量名,可以调用任意访问权限的成员变量
2、在类外通过引用调用
通过 . 运算符
对象(引用变量).成员变量
3、类中方法之间调用
直接使用方法的名字调用
调用方式: 方法名(实参列表)
4、类外通过引用调用
通过 . 运算符
调用方式:对象(引用变量).方法名(实参列表)
5、如果方法有具体返回值,可将方法当作值来用。例如:
int larger = max(30, 40);
如果方法返回值是void,方法调用是一条语句。例如,方法println返回void。下面的调用是个语句:
System.out.println(“Welcome to Java!”);
引用this
1、this存在于类的方法中,表示调用该方法的那个对象,其使用和其他对象引用并没有不同。
2、在方法内部调用同一个类的成员变量或方法时不需要指定this(默认使用)。只有当显式的指定当前对象的时候才需要。
对象的内存分配
1、基本数据类型的变量在声明时同时分配存储器空间,默认为基本值。不同基本数据类型的基本值不同(参考默认值)
2、引用类型的变量在声明时只分配引用变量的存储空间,不分配对象存储器空间。因为引用的值不是对象数据,只是对象的引用。引用类型变量的默认值为null。(参考下图)

在使用对象变量之前,实际存储空间必须被分配。这个工作是通过使用关键字new来实现的。如下所示:
MyDate myBirth;
myBirth = new MyDate ();
第一个语句(声明)仅为引用分配了足够的空间
第二个语句则为构成MyDate对象的三个整数分配了空间。
对象通过new创建后赋值给引用myBirth,使变量myBirth重新正确地引用新的对象。这两个操作完成后,这个MyDate对象的内容可通过myBirth这个引用进行访问。(通过.运算符)
区分两种String
1、String str=“abc”;
2、String str_=new String(“def”);
3、上述第一种定义一个String常量,此常量只保存一个,可通过==比较;第二种生成一个普通的String对象,new几次便生成几个内容为”def”的String对象,通过equals比较内容


被折叠的 条评论
为什么被折叠?



