面向对象
(1)什么叫面向对象? 面向对象就是一种常见的程序结构设计方法。 面向对象思想的基础是将相关的 数据和方法放在一起,组合成一种新的复合数据类型, 然后使用新创建的复合 数据型 作为项目的基础。
(2)面向对象:是基于面向过程的一种思想。
面向过程:强调的是功能行为,一种过程,先干啥,再干啥;
面向对象:将功能封装到对象里,强调的是具备某功能的对象;
(3)面向对象的思想特点:
A:是一种更符合人们思考习惯的思想。
B:把复杂的事情简单化了。
C:把我们从执行者变成了指挥者。举例:买手机取钱旅游
我的总结: 面向过程:强调的是具体的功能实现;(执行者)
面向对象:强调的是具备功能的对象。(管理者)
类
类是Java 语言的最小编程单位,也是设计和实现Java 程序的基础
(1)类的概念:
类是一组事物共有特征和功能的描述。类是对于一组事物的总体描述,是按照面向对象技术进行设计时最小的单位,也是组成项目的最基本的模块。类的概念是抽象的,类似于建筑设计中的图纸,是对于现实需要代表的具体内容的抽象。类只包含框架结构,而不包含具体的数据。所以类代表的是总体,而不代表某个特定的个体。
我的总结:类是抽象的,对象是具体的,实实在在的!
(2)类的定义:
[修饰符] class 类名{
1~n个构造方法;
0~n个字段;
0~n个方法
}
举例:
//定义一个学生类
class Student{
//成员变量
private int age;
private String name;
//成员方法
public void show(){
System.out.println(name+age);
}
}
(3)类与对象的关系:
把事物转换成类:
A:成员变量定义在类中,方法外
B:成员方法和以前的区别是去掉static
类:是相关的属性和行为的集合。是一个抽象的概念。
对象:是某种事物的具体存在,具体的表现形式。
举例:学生 张三
(4)如何使用呢?
A:创建对象格式:类名 对象名 = new 类名();
B:使用成员变量和成员方法对象名.成员变量对象名.成员方法
(5)类包含哪些东西?
变量:类或对象所包含的数据,对类状态的一种描述;
方法:类或对象的特征或行为
构造方法:用户创造该类的对象,还能给对象初始化
构造方法
构造方法:用来构造类的实例(每一个类都默认有一个无参的构造方法,得使用new调用)
(1)作用:
给类中的字段进行初始化,可以用来创建对象。
(2)特点:
方法名与类名相同
不用定义返回值类型
不需要写return语句
(3)构造方法的重载:(需要哪个就去适配哪个,调用哪个)
this([实参]);调用当前类的构造方法
注意: this([实参]);必须放在构造器的第一行;
(4)对象的产生格式:
类名称 对象名 = new 类名称();
因为有(),所以是方法,实际上它就是构造方法,并且是非私有的构造方法。
如:Student s= new Student()
我的总结:
系统默认会给每个类一个无参的构造函数;如果我们定义了构造函数,
系统将不会再给的构造函数多个构造方法是以重载的形式存在的。
static关键字
(1)是一个关键字。可以修饰成员变量和成员方法。
(2)特点:
随着类的加载而加载
优先于对象存在
被所有对象所共享
可以直接被类名调用
(3)使用注意:
静态方法只能访问静态成员
但是非静态成员可以访问静态成员;
静态方法中不可以使用this,super关键字
主方法(main)是静态的(可以利用类名去调用静态的main方法,很正常!但是会陷入死循环,导致内存溢出,jvm自动停止!)
public staticvoid main(String[] agrs){}
(4)可修饰变量,方法。
用static 修饰的成员表示它属于这个类共有,而不是属于该类的单个实例。
没使用static修饰的变量和方法,成员属于类的单个实例,不属于类。
(5)类和实例访问变量和方法的格式:
访问类成员: 类名.变量 类名.方法
访问实例成员: 对象.变量 变量.方法
(6)什么时候该用static呢?
如果某个内容是所有对象共享的,就用静态修饰。
举例:
水杯和饮水机。
老师和学生。
我的总结:
static修饰的字段和方法,既可以通过类调用,也可以使用实例调用
没static修饰的字段和方法,只能使用实例来调用
static关键字不能与this,super同时连用!
匿名对象
(1)匿名对象:一个没有名字的对象, 创建了一个对象出来,没有赋给一个变量;
(2)特点:
对方法或字段只进行一次调用时;
可作为实际参数进行传递;
只在堆里面开辟存储区域,
只能使用一次, 使用完就被销毁了;
何时使用?1、只拿来用一次!
2:当做实际参数进行传递
new Person();表示匿名对象,没有名字的对象
new Person().name;使用一次之后就被销毁了
(2)什么时候使用this关键字呢?
当局部变量名和成员变量名一样的时候,用this区分
构造函数内调用本类其他的构造函数,this必须写在第一行
(3)注意:
this不能用在static修饰的方法里和static修饰的代码块里;
我的总结:在方法中,哪个对象调用方法,this就代表该对象
代码块
定义:放在{}中的代码称为代码块
分类:定义在方法中的为局部代码块,作用是让变量从内存中尽早消失
定义在方法外的称为构造代码块,把所有构造方法中的共同内容放在构造代码块中,作用是给
对象进行赋值
静态代码块
定义:用static修饰的代码块
什么时候运行?随着类的加载就运行,且只运行一次
静态代码块代码块和构造函数进的运行顺序是怎么样的?
通过下面代码的测试可以得出结果
我的总结:在调用构造函数创建对象的时候,运行顺序是 静态代码块>代码块>构造函数,如果该类有父类,构函数内还会通过super关键字调用父类的构造函数