面向过程和面向对象的设计思想
面向过程:
注重于解决步骤
面向过程适合处理简单的事情,直接关注流程,简单有效。
例如:
打开冰箱门();
装大象();
关闭冰箱门();
面向对象:
宏观,整体上的设计
面向对象适合处理复杂的事情,先使用面向对象的方式对整体关系作出分类,然后,根据不同的类深入细节的处理。
例如:
门类
开门();
关门();
设计冰箱类
门类
人类
操作();
简而言之,面向过程的思想在做事情时是需要说明事情具体怎么做,而面向对象是将具体怎么做的过程封装起来,做事情时直接使用这个封装品,在现实生活中,我们做事情需要安排计划,面向对象可以理解成安排计划,很明显面向对象注重外部的框架设计,面向过程注重内部的具体实现。
面向对象无法取代面向过程,他们是相辅相成的。面向对象关注于从宏观上把握事物之间的关系,在具体到如何实现某个细节时,仍然采用面向过程的思维方式。面向对象如果离开了面向过程,就无法实现真正的落地,成为无源之水。
java类
什么是类?
类是一个模板,它描述一类对象的属性和行为.
类是表示一个客观世界某类群体的一些基本特征抽象.
类里面定义事物特征 == 汽车设计图纸 == .java文件
对象时具体存在 == 具体的某一辆车(实际存在,可以使用的) 在内存中存储
java中类的设计
类中内容
属性
方法
构造方法
内部类
代码块
public class Car {
String name;/* 类的成员变量
[访问权限修饰符][修饰符] 数据类型 变量名 [=值];*/
double price;
String color;
public void qidong(){ /*
类的成员方法
[访问权限修饰符][修饰符] 返回值类型/void 方法名([参数类型 参数名称]){
[return 值];
}
*/
System.out.println("启动");
}
public void jiasu(){
System.out.println("加速");
}
}
java对象
/*
创建汽车对象:
以Car类为模板,
Car baoma = new Car();
new 关键字+默认构造方法():
在内存空间创建一个对象,实际存在的,实例化对象
Car baoma :
以Car类作为类型 声明一个变量 指向内存空间中的具体的对象
使用baoma变量访问对象中属性,方法
通过类可以创建无数个对象
*/
Car baoma = new Car();
baoma.name = "x5";
baoma.price = 600000;
baoma.color = "红色";
Car benchi = new Car();
benchi.name = "GTR";
benchi.price = 700000;
benchi.color = "黑色";
System.out.println(baoma.name);
System.out.println(baoma.price);
System.out.println(baoma.color);
baoma.qidong();
baoma.jiasu();
System.out.println(benchi.name);
System.out.println(benchi.price);
System.out.println(benchi.color);
benchi.qidong();
benchi.jiasu();
类中变量
成员变量:
- 成员变量是定义在类中,方法体之外的变量。
- 成员变量可以使用Java语言中任何一种数据类型(包括基本类型和引用类型)。
- 在定义成员变量时可以对其初始化,如果不对其初始化,Java使用默认的值对其初始化。
- 成员变量在创建对象的时候会从类中复制一份到对象中。
- 成员变量可以被类中方法、构造方法和特定类的语句块访问。
- 成员变量的作用范围为整个类体。
局部变量
- 在方法、构造方法或者语句块中定义的变量被称为局部变量。
- 局部变量可以使用Java语言中任何一种数据类型(包括基本类型和引用类型)。
- 局部变量在使用前必须初始化赋值。
- 变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
类变量
- 类变量:(也叫静态变量)类变量也声明在类中,方法体之外,但必须声明为static类型。
类中的方法
成员方法:成员方法是定义在类中。这种方法在创建对象的时候创建。
语法格式:
修饰符 返回值类型/void 方法名 ( 参数列表) {
方法体语句;
[return 返回值]
}
构造方法:用来创建对象的方法
/**
* 人类
*/
public class Person {
/*
成员变量
*/
String name;
int age;
/*
构造方法
方法名与类名相同,没有返回值,不需要void修饰
一个类中可以拥有多个构造方法(方法重载)
如果类中没有显示的声明构造方法,类中会默认有一个无参构造方法
一旦类中定义了有参的构造放法,默认无参的构造方法会被覆盖, 建议显示的写出来.
*/
public Person(){
System.out.println("Person构造方法1");
}
public Person(String n,int a){
name = n;
age = a;
System.out.println("Person构造方法2");
}
public Person(String n){
name = n;
System.out.println("Person构造方法3");
}
public Person(int n,int a){
System.out.println("Person构造方法4");
}
public Person(int a,String n){
System.out.println("Person构造方法5");
}
/*
成员方法
其他成员方法也可以重载
什么样的情况构成方法重载: 在同一个类中,有多个方法名相同,且参数不同.
参数不同具体表现:
个数不同
类型不同
顺序不同
*/
public void eat(){
}
public void eat(int a){
}
public void eat(int a,int b){
}
public void eat(String a,int b){
}
//同一种功能,但是使用的数据类型不同
public int getMax(int a,int b){
return a;
}
public float getMax(float a,float b){
return a;
}
public void study(){
}
类方法:(也叫静态方法)类方法也声明在类中,但必须声明为static类型
方法重载
方法的重载是指一个类中可以定义有相同的名字,但参数不同的多个方法。
调用时,会根据不同的参数表选择对应的方法。
方法重载
同一个类中方法名相同,参数不同(可以有三方面的不同)
-
数量不同
-
类型不同
-
顺序不同
注意:方法重载跟方法的返回值类型,访问权限没有任何关系