面向过程和面向对象
●
面向过程:
procedure oriented programming
缩写
POP
分析出解决问题所需要的步骤,然后把步骤一步一步实现。
面向过程直接关注流程。
●
面向对象:
object oriented programming
缩写
OOP
面向对象的编程语言
以分类的方式进行思考和解决问题。
面向对象先对整体关系作出分类,然后根据不同的类深入细节的处理。
面向对象的思想符合人类的认知习惯。
面向对象无法取代面向过程,他们是相辅相成的。面向对象关注于从宏观
上把握事物之间的关系,在具体到如何实现某个细节时,仍然采用面向过
程的思维方式。面向对象如果离开了面向过程,就无法实现真正的落地,
成为无源之水。
java
类
类的结构
成员变量:事物属性的描述;
方法
:
事物的行为;
构造方法:初始化对象;
内部类:
即在类体中声明的类。
块:一段没有名称的代码块
Java
类的定义
第一步 发现类
类的声明格式为
:
[
访问权限修饰符
] [
修饰符
] class Car{
}
访问修饰符有两种
public
,无
(
默认
)
修饰符:
final,abstract
关键字
class
用来定义一个类
Java
类名的命名规范
:
类名首字母大写
,
见名知意
,
驼峰表示
第二步:发现类的共有属性
(
成员变量
)
public class Car{
//
成员变量定义
String name; //
名称
String color; //
颜色
float price;//
价格
}
声明成员变量的格式为:
[
访问权限修饰符
]
[
修饰符
]
type attr_name [=defaultValue] ;
成员变量是定义在类中,方法体之外的变量。
成员变量可以使用
Java
语言中任何一种数据类型(包括基本类型和引用类型)。
在定义成员变量时可以对其初始化,如果不对其初始化,
Java
使用默认的值对其初始化。
成员变量在创建对象的时候会从类中复制一份到对象中。
成员变量可以被类中方法、构造方法和特定类的语句块访问。
成员变量的作用范围为整个类体。
第三步:发现类的方法
public class Car{
//
成员变量定义
String name; //
名称
String color; //
颜色
float price;//
价格
方法声明格式为
:
[
访问权限修饰符
] [
修饰符
]/ void start(){
System.out.println("
汽车启动
");
[return
返回值
;]
}
}
对象的创建和使用
●
对象的创建和使用
Car x1 = new Car();
Car x1
:使用Car类作为类型声明一个变量x1.
new Car()
:使用new + Car类构造方法创建对象.
= :
将右边创建的对象地址 赋给 左边的x1变量
使用x1变量访问对象中的成员变量和成员方法.
●
同一类的每个对象有不同的成员变量存储空间。
●
同一类的每个对象共享该类的方法。
类和对象
●
总结类和对象
类是一类事物的抽象概念,是一个模型.
对象是由这个模型所创造的一个个具体存在的,实实在在存在的实例.
所以创建对象的过程也叫实例化对象.
•
现实生活中先有对象后有类,而编程时先设计类后创建对象
变量分类
按照位置变量分为:
● 成员变量:
成员变量是定义在类中,方法体之外的变量。
成员变量可以使用
Java
语言中任何一种数据类型(包括基本类型和引用类型)。在定义成
员变量时可以对其初始化,如果不对其初始化,
Java
使用默认的值对其初始化。成员变量
在创建对象的时候会从类中复制一份到对象中。
成员变量可以被方法、构造方法和特定的语句块访问。
成员变量的作用范围为整个类体。
● 局部变量:
在方法、构造方法或者语句块中定义的变量被称为局部变量。
局部变量可以使用
Java
语言中任何一种数据类型(包括基本类型和引用类型)。局部变量
在使用前必须初始化赋值。
变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
方法分类
l
成员方法:成员方法是定义在类中。
语法格式:
修饰符 返回值类型 方法名
(
参数列表
) {
方法体语句;
[return
返回值
]
}
● 构造方法
:
用来初始化对象的方法
构造方法
•
构造方法名与类名相同
,
且没有返回值,且不需要使用void修饰
。
•
作用:在构造方法中为创建的对象初始化赋值,
•
在创建一个对象的时候,至少要调用一个构造方法。
•
每个类都有构造方法。如果没有显式地为类定义构造方法,
Java将会为该类提供一个默认
构造方法,但是只要在一个Java类中定义了一个构造方法后,默认的无参构造方法即失效。
•
一个类可以有多个构造方法。
例:
public class Car{
public Car(){ }
public Car(String name){ // 这个构造方法有一个参数:name }
}
例:创建Car类的对象
Car car1 = new Car();
Car car2 = new Car(“宝马”)
方法的重载
●
方法的重载是指同一个类中具有相同的名字,但参数不同的多个方法。
●
参数不同(可以有三方面的不同)
●
数量不同
●
类型不同
●
顺序不同
●
调用时,会根据不同的参数表选择对应的方法。
•
注意:方法重载跟方法的返回值类型没有任何关系