什么是面向对象思想?有什么特点?
在要求众多,单一进行一步一步的操作显得效率很低,而面向对象思想则是将相似的功能进行封装,在需要执行此项功能时只需找到对应的类。
其特点是:符合人为的思想习惯,可以将复杂的事情简单化,是人从执行者变为指挥者。
类与对象
- 类:是一组相关的属性和行为的集合
- 对象:是该类事物的具体体现
类的成员包括成员变量和成员方法
例 学生为一个类 ,学生的名字就是类的成员变量,学生可以学习,打游戏就是类的成员方法。
创建一个类
A:文件名问题 在一个java文件中写两个类:一个基本的类,一个测试类。 建议:文件名称和测试类名称一致。
B:如何使用呢? 创建对象使用。
C:如何创建对象呢? 格式:类名 对象名 = new 类名();
D:如何使用成员变量呢? 格式:对象名.变量名
E:如何使用成员方法呢? 格式:对象名.方法名(…)
- 成员变量和局部变量
1.成员变量作用在类内方法外,局部变量在方法定义或方法声明上。
2.成员变量在堆内存,局部变量在栈内存。
3.成员变量随方法创建而创建,随方法消失而消失。局部变量则是调用时产生,调用完便消失。
4.成员变量有默认初始值,局部变量没有默认初始值,需要赋值。
- 形式参数
基本类型:形式参数的改变不影响实际参数
引用类型:形式参数的改变直接影响实际参数
- 匿名对象
就是没有名字的对象,仅仅在只调用一次的时候使用匿名对象,也可以作为实际参数传递。
- 封装
其是将对象的属性和细节隐匿起来,只对外提供访问方式。
其特点是提高复用性,提高安全性,对一些特殊的成员变量和成员方法隐藏具体的实现细节,只提供访问方式。
- private
权限修饰符,可以修饰成员变量和成员方法,在被private修饰后的成员变量和成员方法只能在本类内进行访问。
当外部想访问被private所修饰的成员变量时,提供对应得setxxx()和getxxx()来进行访问。
- this指针
在成员变量和局部变量名相同时,可能会遇到将局部变量调用,而非调用所需要的成员变量。使用this的话可以避免此类情况发生。
谁调用this,this 就代表谁。
- 构造方法
其作用是创建一个对象,对对象内的成员进行初始化。
其方法名与类名相同,没有返回值类型和具体的值。
构造方法的重载:
分为无参构造和有参构造,如果没有给出构造方法,系统会自动生成一个无参构造方法。
在给成员变量赋值时可以采用构造方法,也可以用setxxx()。
- static
被static所修饰的变量或者方法称为,静态变量,静态方法。
其随类的加载而加载,先于类对象执行,被该类内所有的对象所共享。
静态方法只能访问静态成员变量和静态成员方法,但非静态可以访问静态也可以访问非静态。
static与this的区别:
静态是随着类的加载而加载
this是随着对象的创建而创建。
- 静态变量和成员变量的区别:
静态变量属于类,成员变量属于对象。
静态变量存储在方法区的静态区,成员变量存储在堆内存
静态变量随着类加载而加载,消失而消失。成员变量随对象的创建而创建,消失而消失。
静态变量可以通过类名调用,也可以通过对象调用,但成员变量只能通过对象名调用。
- 代码块
其可以分为局部代码块,构造代码块,静态代码块,同步代码块。
常用的是:
1.局部代码块:在方法中出现,用完便释放,提高内存效率
2.静态代码块:在类中方法外出现,用于初始化类,只执行一次。
3.构造代码块:在类中方法外出现,每次调用构造方法都执行,执行在构造方法前。
- 继承
多个类拥有相同的成员变量或者方法时,可以通过继承的方式从其中的一个类中继承到自身即可,自身不需要在写这些相同的成员变量和方法。
格式为:
class 子类名 extends 父类名 {}
JAVA中只支持单继承,不支持多重继承
支持多层继承。
在继承的过程中,子类只能继承父类的共有成员,不能继承私有成员。
- super和this的区别
super是局部范围访问父类成员变量
this只能是本类对象的引用,而super是可以引用父类对象。