面向对象(1)
一、面向对象的介绍
1、什么是面向对象的思想
面向对象的思想是基于面向过程思想发展而来的。
面向过程:强调的是实现功能每一个步骤
面向对象:强调的是对象,然后由这个对象去调用功能
2、面向对象的特点:
1) 是一种更符合我们思想习惯的思想
2) 可以将复杂的事情简单化
3) 将我们从执行者变成了指挥者
举例:
吃饭:
面向过程的思想:先去菜市场买菜--洗菜--切菜--做菜--装盘--吃
面向对象的对象:点外卖--你(点菜)--厨师(做菜)--外卖小哥(送餐)
打水:
面向过程的思想:拿起水杯--走到饮水机面前--选择热水还是冷水--接水--喝
面向对象的思想:祈求同桌去打水--同桌走到饮水机面前--接水--你喝水
例:把大象装进冰箱
分析: 大象类:
属性:体积,鼻子,脚掌,耳朵...
功能:被装进冰箱,喝水,叫...
冰箱类:
属性:立方体,材质,功率...
功能:打开冰箱门,关闭冰箱门,冷藏,保险...
测试类:(通过引用大象类、冰箱类来实现我们的需求)
main方法,实现需求
伪代码实现:
class Elephant{ //第1步:创建一个大象类
体积;
鼻子;
被装进冰箱(); //被装进冰箱这个方法
喝水(); //喝水这个方法
}
=========================================================
class IceBox{ //第2步:创建一个冰箱类
立方体;
材质;
打开冰箱门(); //打开冰箱门这个方法
冷藏(); //冷藏这个方法
}
==========================================================
class Demo{ //第3步:创建一个测试类
public static void main(String[] args){
调用冰箱类中打开冰箱门的方法;
调用大象类中被装进冰箱的方法;
调用冰箱类中关闭冰箱门的方法;
}
}
二、面向对象开发,设计,特征
1、面向对象的开发:
实际上就是不断创建对象,使用对象,指挥对象做事情的过程
2、面向对象的设计:
其实就是管理和维护类与类之间的关系的过程
3、面向对象的特征:
1、封装
2、继承
3、多态
4、类与对象之间的关系
类:是一组成员变量和成员方法的集合,是一个抽象的概念
成员变量==========属性:用来描述事物的信息(类似于外在的:五官、身高、姓名、年龄)
成员方法==========行为:用来描述事物能够做什么(类似于动态的:吃饭、学习、睡觉、喝水)
对象:是该类事物的具体表现,具体到某一个个体(类似于职务:老师,学生,程序员)
5、定义学生类 事物========对应======类
属性========对应======成员变量
行为========对应======成员方法
事物(学生)=================类(Student)
属性:学号,姓名,年龄=========成员变量:id,name,age
行为:吃饭,学习,睡觉=========成员方法:eat(),study(),sleep()
回顾:(给类起名字:所有单词首字母大写)
(给变量或方法起名字:第一个单词全小写,第二个开始首字母大写)
====================================================================================
步骤:第1步:定义一个学生类
第2步:定义该类中的成员变量
格式:
(修饰符) 数据类型 变量名;
未系统学过修饰符,目前不用加修饰符
第3步:定义该类中的成员方法
格式:
修饰符 返回值类型 方法名(参数列表){}
(目前修饰符只使用public static)
========================================================================
//第1步:定义一个学生类(public可加可不加)
public class Student {
//第2步:定义学生类中的成员变量
int id;
String name;
int age;
//第3步:定义学生类中的成员方法
public static void eat(){
System.out.println("吃饭"); //定义吃饭的方法
}
public static void study(){ //定义学习的方法
System.out.println("学习");
}
public static void sleep(){ //定义睡觉的方法
System.out.println("睡觉");
}
}
8、测试类(测试学生类)
创建对象,调用成员变量和成员方法
步骤:
第1步:创建一个学生对象
格式:
类 对象名(随便起)= new 类名();
第2步:调用成员变量
格式:
对象名.成员变量名
第3步:调用成员方法
格式:
对象名.成员方法
========================================================================
在同一个java文件中,类只允许存在一个public
//第1步:定义一个学生测试类(类名不能与学生类名一样,而且需要main方法)
class StudentDemo {
public static void main(String[] args) {
//第1步:创建一个学生对象(想要调取手机类中的东西,必须要创建手机对象)
//创建学生对象的类名要和手机类的名字一样:Student
//然后给学生对象起个名字叫:xiaoli
Student xiaoli = new Student();
//第2步:调用该对象的成员变量(未赋值)
//获取xiaoli的学号:(未赋值)系统默认值0
System.out.println(xiaoli.id);
//获取xiaoli的姓名:(未赋值)系统默认null
System.out.println(xiaoli.name);
//获取xiaoli的年龄:(未赋值)系统默认值0
System.out.println(xiaoli.age);
第2步:先给成员对象赋值,然后再调用
//赋值格式:
// 对象名.成员变量名 = 成员变量对应数据类型的值;
xiaoli.id = 8888;
xiaoli.name = "李玉伟";
xiaoli.age = 100;
System.out.println(xiaoli.id); //8888
System.out.println(xiaoli.name); //李玉伟
System.out.println(xiaoli.age); //100
第3步:调用成员方法
xiaoli.eat();
xiaoli.study();
xiaoli.sleep();
}
}
以上代码执行结果如下:
0
null
0
8888
李玉伟
100
吃饭
学习
睡觉
Process finished with exit code 0
总结:
1、定义一个学生类(不需要main方法):public class Student {}
(1)定义学生的成员变量 数据类型 变量名;
int id; String name; int age;
(2)定义学生的成员方法 修饰符 返回值类型 方法名(参数列表){}
public static void eat(){}
2、同一个java程序中,再定义一个测试学生类(去掉public,需要main方法)
(一个java程序中,只允许有一个public)
class StudentDemo {
public static void main(String[] args) {}
{
(1)创建一个学生对象 类 对象名(随便起)= new 类名();
Student xiaoli = new Student();
(2)获取未赋值的成员变量,只能写输出语句
System.out.println(xiaoli.id);
(3)给成员变量赋值 对象名.成员变量名 = 成员变量对应数据类型的值;
xiaoli.id = 8888; xiaoli.name = "李玉伟";
(4)然后再获取赋过值的成员变量
System.out.println(xiaoli.id);
(5)调用成员方法 对象名.成员方法
xiaoli.eat();
xiaoli.study();