面向对象概述
面向对象是分模块的,比如厨师烧菜这件事情,可以把厨师,菜,厨房当成对象,做这件事情的时候调用这几个对象能完成这个事情,而不关心每个对象具体是怎么实现的。优势,易扩展,易维护,灵活性高,代码(程序)耦合度低,性能相较于面向过程低。
面向对象与面向过程
面向过程类似于事情该怎么做,把一件事情分成几个步骤,每个步骤对应写一个方法,按顺序调用方法来完成一件事情。
面向对象类似于事情该交给谁去做,这个谁就是对象,对象怎么做是对象的事情,反正几个对象可最后可以完成这件事情就行。只关心调用谁,不关心其具体怎么实现。
1. 类与对象
1.1 概述
类是一类事物客观描述的标准。一类对象的抽象
对象是一个具体的符合类标准的个体,一切皆对象。一个具体的实体
通过不同属性划分不同类,通过不同属性值划分不同对象。
1.2 构造方法
声明:权限修饰符 构造方法名(参数列表){}
构造方法没有返回值,也没有void,构造方法名必须与类型相同
可用于对象被创建时的调用,然后创建该类的对象,对属性进行初始化,如果没有写构造方法,则编译器会自动帮我们生成一个无参的构造方法,如果写了一个有参的构造方法,则需要手动写一个无参的构造方法,因为这种情况下编译器不会自动生成无参构造方法。
1.3 对象使用
//创建对象
GouZao suiBian=new GouZao();
//属性赋值
suiBian.age=23;
//调用成员方法
suiBian.s();
//调用静态方法
GouZao.getAge();
1.4 bean
JavaBean:公共的类,无参构造,获取属性的方法(getter-获取和setter-修改方法)私有化的属性,这样写,易维护,比如后期如果要修改属性名,不用一个一个去相应地方修改,直接在类里面改一下就行,这样写还可以设置属性值的取值规范。
1.5 实例化
实例化就是创建一个类的对象
GouZao suiBian=new GouZao();
new关键字会在堆中开辟一个内存空间,存放对象属性,然后调用构造方法对属性进行初始化,构造方法执行完毕之后弹栈,并把内存地址返回给调用处,也就是赋值给suiBian这个变量。变量用来存储数据。
1.6 异常
常见异常有空指针异常,下面代码则会发生空指针异常,因为没有初始化User。
User user=null;
System.out.print(user.getAge());
1.7 调用
类名.方法名();当前类中可以忽略类名。
静态方法中不能调用非静态方法和属性,
对象名.静态方法名() 在编译时,会自动把对象名替换成相应的类名再去调用
传值和传引用同数组。
this 就是当前对象,谁调用这个方法,this就是谁。