1、面向对象的编程思想
1.1、面向过程的编程思想
面向过程的编程思想,就是以流程(过程)为单位,更注重最后功能的实现。
缺点:
1、 代码的耦合性(关联性)比较高
2、 不易于程序的维护和功能的扩展
1.2、面向对象的编程思想
【面向对象的编程依赖于面向过程的编程】
面向对象的编辑思想,就是把一个事物看成一个整体,从事物的特征(属性)和行为(功能、 方法)两个方面进行描述。
Java 语言是一门纯面向对象的编程语言,而面向对象思想是一种程序设计的思想,我们在面 向对象的指引下,使用 java 语言去设计、开发计算机程序,这里的对象是泛指一切事物,每 种事物都有自己的属性和行为,而面向对象思想就是在计算机程序设计过程中,参照现实中 的事物,将事物的属性和行为进行描述。
区别:
面向过程:强调步骤
面向对象:强调对象
特点:
面向对象思想是一种更符合我们人类正常思维方式的思想,他可以将复杂的事情简单化,并 将我们从执行者变成指挥者。
面向对象思想来源于生活服务于生活
面向对象的编程中一定会用到面向过程的编程
面向对象包含了三大特征(封装、继承、多态)(四大特征:抽象、封装、继承、多态)
1.3、什么是对象
对象:在现实生活中具体存在的一个事物,就是一个对象。
万事万物,皆对象
对象特点: 无论两个事物有多么的相似或相近,永远都是两个不同的对象。
一项法律,法规,政策和规章制度都是一个对象
1.4、抽象
所谓的抽象,就是把同一类事物中共有的特征(属性)和行为(功能、方法)进行抽取,归纳,总 结。
1.5、封装
●封装:其实就是包装,对抽象出来的数据进行包装。
●封装目的:就是为了保证数据的安全性
●封装包括两个方面:属性的封装 和 方法的封装
●封装不是绝对的封装,如果要想访问封装起来的数据,可以通过指定的入口即可。
●抽象和封装这两个特征,在程序中的具体体现形式就是【类】
●属性和方法的封装两者是相辅相成密不可分的。
1.6、类(class)
类:是一组相关属性和行为的集合,可以看成是一类事物的模板,使用事物的属性和方 法来描述该类事物。
现实中,描述一类事物
属性:就是该事物的状态信息
行为:就是该事物能够做什么
例如:人类
属性:名字,体重,年龄,身高
行为:说话、吃饭、睡觉
类的定义
Java 中用 class 关键字来描述类
类中:
成员属性(变量) 对应的就是事物的属性
成员方法:对象事物的行为
类的定义语法:
public class 类名{
//成员变量
//成员方法
}
●定义类:就是定义类的成员,包括成员变量和成员方法
●成员变量:和以前定义的变量几乎是一样的,只不过位置发生了改变,成员变量位于类 中,任何方法之外。
●成员方法:和以前定义的方法几乎是一样的,只不过把 static 关键字去掉。
package com.bdit;
/**
* 定义一个人类
* */
public class Person {
//姓名
String name;
//年龄
int age;
//性别
String gender;
//成员方法
public void speak(){
System.out.println("人类说话");
}
public void run(){
System.out.println("人类行走");
}
public void eat(){
System.out.println("人类会吃饭");
}
}
变量的分类
根据数据类型划分:
● 基本数据类型变量
●引用数据类型变量
根据位置划分:
●局部变量:定义在方法的内部或某个语句块的内部,局部变量的使用范围只限于方 法内或语句块内。
●局部变量必须初始化了,才能使用
●全局(成员)变量:定义在类的内部,任何方法的外部,使用范围是整个类
1.7、类和对象
类和对象之间存在的关系:
●类是对对象的抽象
●对象是类的实例化
创新对象,语法格式:
类名 对象名=new 类名();
对象的使用:
● 调用成员变量语法格式:对象名.成员属性(变量)
●调用成员方法语法格式:对象名.方法名(参数列表);
成员属性都有默认值,所以在声明成员属性时,可以不用初始化,就能使用
默认值跟数据类型有关系
数据类型 | 默认值 |
---|---|
byte | 0 |
short | 0 |
int | 0 |
long | 0 |
float | 0.0 |
double | 0.0 |
boolean | false |
char | 空字符 |
引用类型 | null |
package com.bdit;
/**
* 定义一个人类
* */
public class Person {
//姓名
String name;
//年龄
int age;
//性别
String gender;
//char 类型
char c;
//成员方法
public void speak(){
System.out.println("人类说话");
}
public void run(){
System.out.println("人类行走");
}
public void eat(){
System.out.println("人类会吃饭");
}
public static void main(String[] args) {
//创建一个当前类的对象
Person person1=new Person();
//给成员变量赋值
person1.name="张三";
person1.age=22;
person1.gender="man";
person1.c='a';
//成员变量的默认值
System.out.println("姓名:"+person1.name);
System.out.println("年龄:"+person1.age);
System.out.println("性别:"+person1.gender);
System.out.println("char:"+person1.c);
//调用成员方法
person1.speak();
person1.run();
person1.eat();
}
}
成员方法的应用
语法:
访问修饰符 返回值类型 方法名称(参数列表){
}
访问修饰符:public
返回值类型由返回值决定
【成员属性可以直接在成员方法中使用,但是 main 方法中如果要调用成员属性和方法必须 通过对象.属性名\方法名(参数列表)的形式来调用】
【成员方法之间调用,直接写方法名(参数列表)即可】
代码执行的顺序
代码总是从 main 方法开始,也一定是从 main 方法结束。
package com.bdit;
/*
代码执行的顺序
*/
public class Test2 {
public static void main(String[] args) {
//创建对象
Test2 t1=new Test2();
t1.method1();
System.out.println("method1 执行完毕");
System.out.println("程序结束");
}
public void method1(){
System.out.println("====方法一========");
System.out.println("方法 method1 开始调用 method2");
method2();
System.out.println("method1 调用 method2 结束");
}
public void method2(){
System.out.println("=========方法二===========");
int n=method3();
System.out.println("在 method2 输出 n 的值"+n);
System.out.println("method2 方法执行完毕");
}
public int method3(){
System.out.println("=======方法三=========");
return 15;
}
}