面向对象的思想
分析
拿到给功能后,对其进行分析得出各个子功能,再分析各个子功能所对应的对象,进而分析各个对象之间的关系,再分析各个对象所属范围实现过程:先创建类->再创建对象->对象调用方法->运行
对象与类的关系
- 对象是由属性和方法构成
- 类是由具有共同属性和方法的多个对象抽象出来
- 由上可知:类是对象的模板,对象是类的具体实现
- 注意:类是Java程序的基本编程单位
静态
- 概念:类中共有的元素(方法、数据)其被放入静态区(共享区),可以被类中所有对象共享。
- 声明方法:用static修饰
- 访问方法:类名.共享元素名
类的内容
- 属性、方法、构造方法(实现实例化的方法)、块、内部类
类的创建语法
【访问权限修饰符】 【修饰符】 class 类名{//类体}
构造方法
- 声明方法:【访问权限修饰符】 方法名(形参列表){//方法体}
- 注意:属于类,没有返回值类型,修饰符。
方法名和类名相同,只伴随new关键字出现。
在一个类中如果没有编写构造方法时,jvm会默认的提供一个无参数列表的构造方法,但一旦编写出构造方法时系统就不再提供构造方法。
属性(成员变量)
- 定义:用来封装该类中方法所需要的数据
- 声明方法:【访问权限修饰符】 【修饰符】 数据类型 变量名;
- 成员属性有默认值:整型为0、浮点型0.0、char为空、boolean为false、引用数据类型为null
- 定义:是具有特定功能的指令和数据集合
- 声明方法:【访问权限修饰符】 【修饰符】 返回值类型 方法名(参数列表){//方法体}
- 局部变量:为某一方法特定地提供服务的变量。注意:局部变量在使用前必须赋值,没有默认值。
方法
- 定义:是具有特定功能的指令和数据集合
- 声明方法:【访问权限修饰符】 【修饰符】 返回值类型 方法名(参数列表){//方法体}
- 分类:
- 实例方法:依靠实例中的数据产生不同的结果。必须由对象调用,用于不同的对象,会产生不同的结果,因为每个对象封装的数据不一样。
- 静态方法:同一个类的不同对象能够通过这类方法相互影响;是一种被此类所有对象所共有方法。
- 必须使用修饰符static来修饰方法
- 此方法的调用:类名.方法名
- 静态方法修饰的方法使用实例变量和实例方法
- 局部变量:为某一方法特定地提供服务的变量。
- 注意:局部变量在使用前必须赋值,没有默认值。
- 局部变量不用static修饰
块
分类:
实例块:
- 格式:{//实例块代码}
- 特点:实例块是在创建对象之前默认去访问的代码块,每创建一个对象都会去默认执行一次,多个实例块按照声明顺序执行。
静态块:
- 格式:static {//静态块代码}
- 特点:在类加载的时候最先被加载并且执行,但只执行一次。执行顺序在实例块之前
内部类
- 分类:
- 普通内部类:
- 特点:存在于一个类中的类,里面可以有类体的所有元素,但是都不能被static修饰,能访问外围类中的所有元素。
- 普通内部类对象的创建:外围类.内部类 内部类变量名 = new 外围类的构造方法.new 内部类的方法。
- 静态内部类
- 特点:
- 静态内部类里面的东西可以被静态修饰。
- 只能访问外围类中的静态修饰的东西
- 静态内部类对象的创建:外围类.内部类 内部类变量名 = new 外围类.内部类的构造方法
- 特点:
- 局部内部类:作用在一个方法的内部类。
- 特点:
- 局部内部类不能有静态修饰的东西
- 可以外围类的所有的东西
- 局部内部类不能访问其所在方法中非final所修饰的变量
- 作用:只为实现方法的功能
- 创建局部内部类的对象:在方法中创建
- 特点:
- 匿名内部类
- 后续添加
- 普通内部类:
修饰符final
- 性质:与static一样属于Java中高级特性修饰符
- 作用范围:类、方法、变量。
- 要求:
- 类:该类不能是抽象类,不能被继承
- 方法:该方法不能是抽象方法,不能被重写
- 变量:该变量就会被定义为常量
- 注意:final修饰的属性必须在对象存在时给值,因此必须在声明时给值或者在构造方法给值。
- 在声明时给值,产生的对象的该变量的值全部相等并且不能被改变。
- 在构造方法中赋值产生的结果是不同的对象可以有该变量的不同
值并且不能改变。
常用常量定义方法:
static final 类型 变量 = 初始值- static final 联合修饰时必须在声明时赋值,原因如下:
final修饰的变量只能赋值一次,static修饰的变量是共有的。
故static final修饰的变量只能在声明时赋值
- static final 联合修饰时必须在声明时赋值,原因如下: