1、类与对象
面向对象的思想是通过面向过程的思想演变而来的,面向对象实际上是对面向过程进行功能分化和责任转移而来的。
功能分化是指将工作逻辑分化,可以理解为各做各的事;
责任转移是指将完成工作的责任分化,程序员不关心代码工作过程,只关心结果,具体的工作过程是如何执行的应该由对象自己来负责;
责任转移可类比为:我想吃个煎饼,不需要我自己和面、摊煎饼,我只要和卖煎饼的大妈说:“我要一个煎饼。”,卖煎饼的大妈就会卖给我一个煎饼,我只关心煎饼的结果,做煎饼的过程由大妈负责。
类是对象的抽象,对象是类的实体。
类的成员变量 --> 对象的状态
类的成员函数(方法) --> 对象的行为
2、static静态
2.1、static关键字
被static修饰的方法称为: 静态方法。
被static修饰的变量称为:静态变量或类变量。
没有被static修饰的变量称为: 实例变量。
静态变量和静态方法有如下特点:
- 静态变量、静态方法会随着类的加载而加载,随着类的消失而消失,static的生命周期最长;
- static是优先于对象的存在;
- 静态变量、静态方法被所有对象所共享;
- 静态变量、静态方法可以直接被类名调用;
2.2、类的静态变量、静态方法
在引用普通成员变量、方法时,必须有明确的对象。意思是要明确是哪个对象调用了某个方法。
- 没有
this
引用,静态变量全局只有唯一一份; - 普通函数可以引用静态变量、静态方法;
- 对象上引用静态变量、静态方法会产生编辑器警告;
- 静态方法不可以引用普通成员变量、方法;
2.3、实例变量和类变量的区别
存放位置:
- 类变量(静态变量)随着类的加载而存在于方法区中;
- 实例变量随着对象的加载而存在于堆内存中;
生命周期:
- 类变量(静态变量)生命周期最长,随着类的销毁而销毁;
- 实例变量生命周期随着对象的销毁而结束;
2.4、static和final一起用表示什么?
用 static final 来修饰的成员变量和成员方法,可理解为“全局常量”。
- 对于变量,表示一旦赋值就不可以改变,并且通过类名可以直接访问。
- 对于方法,表示不可以覆写,并且可以通过类名直接访问。
3、接口与抽象类的区别
在概念上:
接口是对类的规范,用实物举例,如:充电器的USB接口,不同的电器如果要用USB充电器的话就必须有一个USB接口,也就是实现USB接口的规范。
抽象类是对父类的部分实现,父类规定了一些方法或变量的实现。
在功能上:类可以实现多个接口,但只能继承一个父类。