一、面向对象编程
编程思想:将生活中的问题转换成代码实现
Java语言中一切皆对象,所有的行为与属性被封装在一个个的对象中。面向对象编程更符合人类思考问题的方式。
面向过程:吃狗屎 面向对象:狗吃屎
二、类与对象
类: 模板,规定了该类所具有的属性和方法;
对象: 类的一个实例;
类描述了所有对象都具备的一些属性和行为,具体的属性和行为由具体的对象实现。不同对象千差万别主要是属性值不同。
例:
人类 —— 类
奥巴马、川建国 —— 对象
三、类与对象的定义和使用
1.类
类的命名采用 大驼峰命名法。一个源文件*.java必须与该文件中的主类同名,源文件中主类有且只有一个。一个源文件中可以存在n个普通类——直接使用class声明了类,不加public。
类的定义:
class 类名称{
属性
方法
其他类/接口
}
2.对象
根据类产生对象,根据对象调用调用属性和方法。
所有引用数据类型访问堆上空间,使用” . "操作符。
3.static
与对象无关,直接通过类名称调用。属性与所在类强关联,不应该让每一个对象拥有一个单独的属性,所有该类对象共享此属性,使用static属性。当对象为null时,仍然可以访问类的静态变量。
- static属性:静态属性
- static方法:静态方法
- static代码块:静态代码块
- static类:静态内部类
四、对象的存储
1.对象名在栈空间存储
2.new出的对象在堆空间存储
3.类中的成员变量都在堆上存储
4.static属性在JVM方法区中存储
五、封装
在Java中,使用private实现属性分装。当一个属性被private修饰,该属性只在类的内部可见,出了该类就无法使用。
封装的作用:保护与易用
易用:一个类中可能含有上万种属性,用户使用时无需知道每一种属性,操作有内部方法实现。
阿里编码规约:类中如无特殊说明,所有成员变量统一使用private封装(99%)。 当一个属性被private封装,此时调用者就无法直接使用。若有继续操作(取得、设置)private属性,需要使用类提供getter、setter。
六、构造方法
构造方法是类的特殊方法,构造方法是执行对象的 初始化操作。
1.语法
构造方法没有返回值声明,方法名称与类名称相同。
访问修饰符(public/private)类名称(){ }
当类中没有显示声明构造方法时,JVM会生成一个默认的无参构造。当类中提供了构造方法时,JVM将不再生成默认的无参构造。
2.重载
重载的构造方法只是参数个数不同,按照构造方法的参数个数升序排列。构造方法就是给类中属性赋值,类中属性的类型在定义时就规定好了。
3.调用
构造方法的相互调用使用this(相关参数)。
使用时必须在该方法的第一行调用,且调用不能成环,不能递归调用构造方法。
七、匿名对象
一个对象没有任何引用指向,只能使用一次,一次之后会成为垃圾被GC回收释放。