回顾
面向过程:自己做事情
变量、流程控制语句、方法、数组
面向对象:叫别人做事情
面向对象
社会(编程)发展的趋势:小工程(细节)自己处理,复杂的,大型的工程需要合作处理,叫别人帮忙
数据的存储和处理:原来只是存储数据,现在需要可以存储数据还可以对数据进行处理
类
类: 类是一类具体事物的抽象,模板(概念)
对象
对象:具体的根据某个类而实实在在存在的东西,这才是能够完成
代码中,现有类,才有对象
类的定义
因为需要有类才能够创建对象,定义一个类(模板)
class 类名{
}
class:定义类的关键字
类名:给类取的标识
{}:类的范围
类是用来存储多个不同类型数据以及提供操作。是将零散的局数据,包装成一个整体
int a = 12;
int[] arr = {};
class Person{
// 信息, 属性
// 姓名
String name;
// 年龄
int age;
// 性别
boolean gender; // true 男, false 女
// 身高
double height;
// 能力, 方法
// 吃饭 见名知意的名称, 返回值, 参数
public void eat(){
System.out.println("人是铁饭是钢,一顿不吃饿得慌");
}
// 睡觉
public void sleep(){
System.out.println("不睡看谁熬死谁");
}
// 吹牛皮
public void say(){
System.out.println("饭可以乱吃,话不可以乱讲");
}
}
对象
对象是根据模板创建出来的实例
Person p1 = new Person();
1、类中预备好了空间可以存储数据,创建对象之后,真的有空间了,能存储数据了
2、每一个对象都有自己独立的空间,存储自己的属性,和别的对象没关系
3、对象所用的方法都是同一块代码,所以大家是共用的
类当中可以存在一个方法 String toString();这个方法是约定,我们都认识的,在使用println打印对象的时候,会自动调用这个方法
构造器 | 构造方法|构造函数
要创建对象,一定会走构造器。利用构造器的这个特点,我们可以通过构造器给对象赋初始值。
在每一个类中都存在至少一个特殊的方法,构造方法
1、形式
方法名和类名一致 && 没有返回值
2、作用|调用时机
构造方法会在new的时候(创建对象的时候)自动被系统调用
3、每一个类都有构造器
如果没有手动给,系统会在编译的时候自动给一个空构造
如果手动给了,系统将不再给
创建对象的过程
Person p1 = new Person();
1、根据类在堆当中开辟空间,并且使用默认值进行初始化(没给则使用每种类型的默认值, 如果给了,就是用我们给的默认值)
2、调用对应的构造器,初始化属性
3、返回开辟的堆空间的首地址
数据量类型
基本类型,简单类型:byte, short, int ,long ,float, double, char, boolean
引用类型,复杂类型,混合类型: 就是简单类型的组合
基本类型都只占用一块空间,带标签的空间,变量中存储的就是数据。
应用类型占用两块空间, 引用(变量)栈中占用一块空间,对象在堆中占用一块空间
Person p1 = new Person();
Person p2 = p1;
p1 引用, 存储的是堆中开辟的空间的首地址
new Person() 对象|实例, 存储在堆中的空间
引用指向对象
一个引用同一时刻只能指向一个对象。 一个对象可以同时被多个引用指向,任何应用对对象进行修改,其他引用均可见
方法和属性的使用
在有权限的前提下
方法调用
对象.方法名();
属性的访问方式
对象.属性名;
this关键字
1、当成员变量和局部变量(形式参数)同名的时候,通过this确定使用属性this.属性名
2、this代表当前对象。 只能出现在方法中,谁调用这个方法,this就是谁
3、this可以在构造器用来调用其他的构造器 this()
必须在构造器中调用
只能在第一行
构造器之间的调用不能形成闭合的环
4、通过this调用其他方法 this.方法名()
statcic关键字
1、static修饰的内容(属性、方法)先于对象存在的,跟随类的存在而存在
2、
属性 :非静态属性,每一个对象有自己的一份独有的。静态属性,所有对象共用一份
方法:先于对象存在
非静态属性对象名.属性名, 非静态方法对象名.方法名()
静态属性:对象名.属性名, 类名.属性名;(推荐)
静态方法:对象名.方法名(), 类名.方法名();(推荐)
在静态方法中,不能使用非静态内容。非静态方法中可以使用静态内容
代码块{}
静态块:类中方法外,同时被static修饰;在类加载的时候执行一次。 一些只是在类加载的时候执行一次的代码,静态块中出现
普通块:方法内,没有关键字修饰; 方法调用的时候执行
构造块:类中方法外 , 没有关键字修饰;创建对象的时候执行,先于构造器执行; 每次创建对象都需要执行的操作
封装
使用者:方便使用
创造者(提供者):保护内部数据的安全
封装适度, 该露的露,该藏的藏
一般而言:属性私有化(藏起来), 方法公开(暴露出来)
权限修饰符,达到封装的效果
private, default, protected, public
类和类的关系:
自己, 同包, 子类(同包和不同包),不同包其他类
王健林, 老婆, 王思聪, 王XX, 你
钱,车,日记, 个人信息
JavaBean 就是普通的Java类
封装通过权限修饰符实现的, 合法的JavaBean应该满足以下的条件
1、属性私有化
2、按需提供设定器和访问器
3、必须有无参构造存在(手动提供)
4、按需提供其他构造器
设定器(设置属性的值,set + 属性名首字母大写)和访问器(获取属性的值 get+ 属性名首字母大写 ):就是一类方法,只是用来做固定用途的方法
如果属性的类型是boolean类型, is + 属性名首字母大写 作为访问器的名称
class
this : 当前对象, this.属性名, this(), this.方法名()
static : 静态的(先于对象存在, 属性【所有对象都共用一份属性】)
权限修饰符: private , default, protected, public