1.面向对象的引入及概念
1.初步解释面向对象含义
所谓面向对象,其实是一种思想。这种思想,在竭力模仿我们的现实生活,让我们人看待世界的方式去看待程序。
从客观世界来看,我们的世界由两种东西组成:
1.生活在客观世界中的个体(有生命的无生命都都是)
2.个体之间的联系
正是因为现实世界中的个体们,“各司其职”,直接或间接的“相互协作”,才保证了这个世界的正常,有序的流转。
其实我们面向对象的程序世界和现实世界也极其类似
1.运行中的程序,由多个个体(也就是我们的对象)组成
2.运行中的个体,需要相互协作,共同完成程序的功能
通过上面我们就明白了,要想写出一个面向对象的程序,也就是Java代码,必须先学会构建运行中的面向对象的基本组成单位---------对象。
试想,如果我们现实世界中,如果没有个体那还能叫世界吗?没有人类没有动物没有各种物品,这个世界还能正常运转吗?
2.如何描述一个对象?
假如有一天,突然有一个外星人来到地球,他看到了一只小花猫,他希望你向他介绍和描述一下,但是这世界上有千千万万只小花猫你怎么向他描述?下次他看见另外一只小花猫发现你和他描述的又不一样了。
但是我们要明白,每只小花猫都有相同的属性和行为。我们把这些共性抽取出来,描述他们的属性和行为上的共性即可。
对某种类型个体的一般性描述,其实就是类。类是同种物体在属性和行为上的集合与抽象
public class Cat { String colour; public void run(){ } }
上面这就是一个Cat类,因为猫都有不同颜色,所以它有一个colour颜色的属性,猫也都会跑,有的爱运动,有的懒洋洋不爱跑。但怎么确定猫的颜色呢?现在站在你和外星人面前的小花猫是一只白色的,那这只猫就是一个具体的小花猫对象。就像人是一个类,它代表的全世界的人类,而每一个人却又是一个具体的对象。
2.类和对象的关系
类和对象:
1.类描述出了某种类型对象共有的属性和行为
2.类描述了对象有哪些属性,具备哪些行为?(包括行为的具体实现)
3.但是各个对象具体属性取什么值,只有具体的对象能确定。比如你说小狗是黑色的,那到底是你家的小狗是黑色的还是邻居家的?
对象与对象
1.不同类的对象,具有不同的属性和行为
2.同一个类的多个对象,虽然有不同的属性和行为,但是不同对象的属性取值看不同
Java中定义类其实就是定义类的成员,包括成员变量和成员方法。我们通过成员变量来描述属性,成员方法来描述行为。
3.举例学生类的实现,加深理解
我们想创建一个学生类,首先要明白学生有什么属性?每个学生都有学号,姓名,性别。那学生都有什么行为了,学生肯定要会学习,要会休息。那我们就初步定义出了下面这个学生类
class Student { int id;//学号 String name;//姓名 boolean gender;//性别 男为true 女为false public void study(){ //表示学习这种行为的方法 System.out.println(name+"学习ing"); } public void sleep(){ //表示休息这种行为的方法 System.out.println(name+"休息ing"); } public Student(int id, String name, boolean gender) {//构造方法 this.id = id; this.name = name; this.gender = gender; } }
上面就是一个学生类的实现,但是它指的是某个指定的学生吗?当然不是,还是回归到类与对象关系的问题上,现在我们有了学生类,那怎么去实现一个学生对象呢?我们先看以下代码
public class Test { public static void main(String[] args) { Student stu1 = new Student(101, "张三", true); Student stu2 = new Student(102, "李四", false); Student stu3 = new Student(103, "王五", true); } }
首先我们需要在main方法中,通过类名 对象名=new 类名()的格式去创建对象,在括号里分别传入,我们的学号,姓名,性别的值。stu1,stu2,stu3是这个三个对象的名字。如果我们想要访问他们的具体属性和具体行为,我们可以通过对象名.成员变量和对象名.成员方法。
public class Test { public static void main(String[] args) { Student stu1 = new Student(101, "张三", true); Student stu2 = new Student(102, "李四", false); Student stu3 = new Student(103, "王五", true); System.out.println(stu1.id);//101 System.out.println(stu2.name);//李四 System.out.println(stu3.gender);//true stu1.study();//张三学习ing stu2.sleep();//李四休息ing } }
通过这种表达格式,我们得到学生stu1的id是101,stu2的名字是李四,stu3是男生的信息。
今天只是初步讲述面向对象思想和初步实现,后续会深入讲解和图解原理。