Java学习第三天(面向对象)
一、面向对象概述
面向对象(Object Oriented)是软件开发方法,一种编程范式。面向对象的概念和应用不仅仅局限于程序设计和软件开发,还应用到了很多领域,诸如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法。
1. 面向对象与面向过程区别
面向过程:思考核心在过程,那么这两个任务将被分散编写。增加了代码的维护难度 ,不符合人类思考方式
面向对象:重点是有哪些对象,分别做什么事情。
2. 面向对象程序设计
将数据及对数据的操作封装在一起,成为一个不可分割的整体
同时将具有相同特征的对象抽象成一种新的数据类型—类
通过对象间的消息传递使整个系统运转,通过类的继承实现代码重用。
3. 面向对象相关概念
OOA:面向对象的分析(Object-Oriented Analysis)
OOD:面向对象的设计 (Object-Oriented Design)
OOP: 面向对象的编程 (Object Oriendted Programming )
面向对象最重要的三大特征是
封装、继承、多态
二、类与对象
Java程序员都知道的一句话:“ 万物皆对象 ”
1. 什么是对象?
生活中的对象:
例如,小黑和小白的年龄、姓名不一样;小黑和小白都能走路、说话等。
年龄和姓名就是小黑和小白具有的特征,他们都能走路就是小黑和小白具有的行为。
生活对象---->用来描述客观事物的一个实体,由一组特征和行为构成
程序对象---->用来模仿客观事物的一个实体,由一组属性和方法构成
程序中对象:
属性----特征
方法---- 行为
2. 类的定义
类就是具有相同属性和方法的一组对象的集合,类可以理解成是对象的类型
例如:
int i = 0;
int 是变量 i 的类型,0 是变量 i 的值,同样的:
Student s = new Student();
Student 是变量 s 的类型,new Student( ) 得到的地址是 s 的值
对象类型不同于基本数据类型(int):对象类型具有方法
类是抽象的概念,对象是类的具体实体
例如“人“ 是类,人这个类中具体有小黑,小白这样的一个一个的人,是对象
类是构成 Java程序的基础
3. 如何定义一个类:
public class 类名 {
//定义属性部分
属性1的类型 属性1;
属性2的类型 属性2;
...
属性n的类型 属性n;
//定义方法部分
方法1;
方法2;
...
方法m;
}
注意:用public定义的类的名称要和文件名一样
类的编写示例
public class Student {
//属性,定义类时一般不用赋值,创建对象是再赋值
String name;//名称
int studentNo;//编号
//做作业方法,方法的定义后边有会细讲,这里先了解
public void doWork(){
System.out.println(this.name+"会做作业");
}
//交作业
public void commit(){
System.out.println(name+"会交作业");
}
}
4. 创建对象
示例:
public class Student {
//属性,定义类时一般不用赋值,创建对象是再赋值
int studentNO;
String name;
//方法,方法的定义后边有会细讲,这里先了解
public void doWork(){
System.out.println(name +"做作业");
}
public void commit(){
System.out.println(name +"交作业");
}
public static void main(String[] args) {
Student s = new Student();//s表示堆中的对象,我们叫引用变量
//如何访问对象的属性,用 对象.属性名
s.studentNO = 1;//访问学生属性,并给属性赋值
s.studentName = "pj";
//s.studentNO 直接获取学性的属性的值
System.out.println("学生的编号:"+s.studentNO+",学生的名称:"+s.studentName);
Student s2 = new Student();//s表示堆中的对象,我们叫引用变量
//如何访问对象的属性,用 对象.属性名
s2.studentNO = 2;
s2.studentName = "xc";
//s2.studentNO 直接获取学性的属性的值
System.out.println("学生的编号:"+s2.studentNO+",学生的名称:"+s2.studentName);
//如何访问对象的行为(方法),用 对象.方法名
s.doWork();
s.submitWork();
//如何访问对象的行为(方法),用 对象.方法名
s2.doWork();
s2.submitWork();
}
}
注意!!!
同一个类中,使用(属性)变量,还是遵循先声明,后使用的原则,方法内访问本类的属性,一般不需要new来创建对象,直接使用即可。
三、类的方法
1. 返回类型定义与使用
1.方法可以有返回类型,或没有返回类型
2.如果没有,则使用void关键字声明
3.如果方法有返回类型,需要声明返回的类型,方法执行完后要通过return关键字返回对应类型的数据,只能返回一个
4.调用方法的地方可以使用对应类型的变量来接收返回的数据
2. 类方法参数
1) 无参方法
语法:
<访问修饰符> 返回值类型 方法名() {
//这里编写方法的主体
}
示例:
public void test(){
//方法的主体
System.out.println("Holle World!");
}
2) 有参数方法使用
语法:
<访问修饰符> 返回类型 <方法名>(<形式参数列表>){
//方法的主体
}
示例:
public class Rabbit {
// 说话需要返回对应的内容,计算方法根据传给方法的两个数字及运算符号返回计算结果
public String speak(String str) {//str叫形参
if (str.equals("在不在")) {
return "在的!";
} else if (str.equals("几点了")) {
return "16点了";
} else {
return "对不起,我听不太明白";
}
}
3. 形参与实参
形参:定义方法时,声明的参数就是形式参数。
形参的参数类型可以是基本数据数据、也可以是对象类型(包括数组、String 或者自已编写的类等);
实参:调用方法,给方法的形式参数传递实际的值
调用有参的方法:
调用时需要给形参赋值,有多个参数,按顺序和对应的类型赋值
4.使用方法是需要注意的细节
- 无参的方法可以不写 return 关键字,也可以写 return 关键字,但是有 return 的时候不可以返回任何值。
- 方法的内部不可以再次定义方法。
- 不能再方法的外部编写逻辑代码(可以使用代码块)