一.初识面向对象语言
1.面向过程语言
过程:具体步骤,要把一件事情,分成一步一步的步骤,然后逐步完成.
例:
洗衣服:
1.打开洗衣机盖()
2.把衣服放进去()
3.关闭洗衣机盖()
2.面向对象语言设计思想
首先要宏观的对整个事务进行分析(分类),不关心具体要怎么做,关心谁(对象)去做.
洗衣机:
开盖()
关盖()
洗衣服()
人:
操作()
注意:面向过程和面向对象是相辅相成的,面向对象是宏观的设计,面向过程是具体的实现.
二.Java类
类就是对同一类事物(具体存在的) 共有的属性(名词)行为(动词)的定义(抽象)
类是一个模板 根据某个类 来创建这个类的具体实例(对象)
发现类(设计类)
定义类的成员变量
定义类的成员方法/*
发现类
汽车类:
[访问权限修饰符] [修饰符] class 类名{
}
/
public class Car {
/
成员变量 类的属性(名词)
[修饰符] 类型 变量名 = [值]
*/
String name;
String color;
float price;
/*
成员方法 类的行为(动词)
访问权限修饰符 返回值类/void 方法名(参数类型 参数名){
[return 值]
}
*/
//行驶
public void run(){
System.out.println("汽车行驶");
}
public void stop(){
System.out.println("汽车刹车");
}
}
三.类中对象
对象是类的实例 是概念的具体存在 以类为模板,在内存中创建一个真实存在的实例.
万事万物(现实存在)皆为对象(可以使用的)
public static void main(String[] args) {
/*
使用new关键字来创建对象 new Car 创建Car类的对象
Car() 使用类的构造方法初始化类
Car bm 声明一个与构造方法名称相同的类型的变量
= 把在内存中对象存储的地址 赋值给左边的 bm变量
*/
Car bm = new Car();
bm.name = "宝马";
bm.color = "黑色";
bm.price=400000f;
bm.run();
bm.stop();
Car bc = new Car();
bc.name = "奔驰";
bc.color = "白色";
bc.price = 500000f;
bc.run();
bc.stop();
}
四.类中的变量
从数据类型角度分:
基本类型变量: byte short int long float dobule char boolean
引用类型变量: 类 数组 接口…
按照位置划分:
成员变量:直接被类包含
成员变量的数据类型可以为基本类型也可以为引用类型
可以对成员变量进行初始化赋值(不建议), 如果不初始化,创建对象时,可以调用构造方法使用默认值赋值.
成员变量在创建对象的时候会从类中复制一份到对象中。
成员变量可以被类中方法、构造方法和特定类的语句块访问
成员变量生命周期: 变量什么时候生(对象创建),什么时候死(对象被回收时)
局部变量:在方法(成员方法,构造方法)中 或者代码块中
局部变量在使用前必须显示的初始化赋值
局部变量生命周期: 变量什么时候生(方法被调用时),什么时候死(方法运行结束 出栈)
五.类中方法
1.成员方法
(非static修饰的) 被对象调用. 完成对象的功能(行为) 定义在类中
2.构造方法
用来初始化创建出来的对象 例如为对象中的属性赋值
方法名与类名相同,没有返回值,不需要void修饰
每一个类中至少有一个默认无参的构造方法,每次创建对象时至少调用一个.
如果显示的定义一个构造方法,默认的就失效了
3.方法重载
在同一个类中,有多个方法的名称相同.
如何区分方法
通过参数区分: 参数个数不同, 类型,顺序
普通成员方法也可以构成方法重载
方法的重载与方法返回值类型无关
六.对象与引用
1.Java中的数据类型
基本数据类型:byte short int long float doule char boolean
引用类型:除了基本类型都是引用, 用类作为类型,数组 复杂类型 复合类型 int [] a = {}
2.为什么叫引用类型?
引用类型变量不是持有对象本身,只是拥有对象地址,通过地址间接访问对象.
七.static
static 修饰成员变量,方法,代码块,内部类
修饰的成员的特点:
随着类的加载而加载
先于对象而存在
修饰的成员,可以被所有的对象共享
可以不创建对象,直接使用类名调用
八.代码块
代码块定义在类中,没有名称,分为实例代码块,静态代码块代码块没有名字,怎么执行?实例块在创建对象时调用,每创建一次对象执行一次静态代码块在类被加载时被调用,只执行一次类被加载时 第一次创建对象,使用类中的静态变量,静态方法
类中元素的加载顺序
先加载静态的,静态的内容按照先后顺序加载.
实例代码块
构造方法
九.包
包从电脑文件系统的角度讲就是文件夹
从java程序的角度讲是类的路径.
作用:
按照不同的功能管理类 不同的模块 用户模块 部门模块 按照功能划分 数据链接, 工具类…
避免类重名
访问权限控制
java.lang包中的类在使用不需要导入,
使用其他包中的类时,需要使用import关键字导入.
访问权限修饰符
public 修饰类,属性,方法 公共权限 在任何位置都可以被访问
protected 修饰属性,方法 受保护权限 同包类 不同包的子类
(default) 修饰类,属性,方法 默认权限 同包类
private 修饰属性,方法,内部类 私有权限 本类
十.封装
就是将类中某些信息隐藏起来(权限),不让外界直接访问,而是通过提供的特定方法来访问.
this
表示当前正在调用的对象