1. 面向对象
* Java的程序一半是运行在多工环境(同一时间有好多人使用)
* 为了保证代码和数据的安全性 每个人使用的类必须分开
* 所以, Java中会造一个模板, 用户使用时, 通过模板造出每个人专属的对象
* 所以, Java成员每天都在跟对象打交道, 咱们称之为面向对象编程
2. 类的使用
* 工具
* 模板
* 成员变量和成员方法混合使用
* 单独使用成员变量的(javaBean)
3. 对象
* 根据模板创建的实例 ,存放在堆内存中
* 一个类可以创建无数个对象
* 类名 对象名 = new 类名();
4. 成员变量和局部变量
* 书写的位置
* 内存中的位置
* 生命周期
* 初始化值
5. 匿名对象
* 没名字的对象
* 用一次就不用了
6. private 关键字
* 私有化 , 本类中的其他成员可以使用, 别的类中无法使用
7. javabean
* 用来存储运输数据
* 私有化所有的成员变量
* 提供getter和setter方法
* 提供toString方法
8. this
* 表示当前对象
* 哪个对象调用这个方法, this就代表谁
构造方法
特性 : 随着创建对象而自动执行 和创建对象这个动作时紧密相连的
作用 :
优先于成员方法执行,
给方法运行时的必要成员变量赋值
构造方法的重载
所有存在的可用的构造方法都是重载关系
构造方法之间可以相互调用 this ()
类成员之间相互调用
成员变量和成员方法之间是可以相互调用的
构造方法可以调用成员变量和成员方法
构造代码块也可以调用成员变量和成员方法
成员变量和成员方法无法调用构造代码块和构造方法
构造方法和构造代码块相互无法调用
代码
局部代码块 : 写在方法内 及时释放资源
构造代码块 : 优先于构造方法执行, 可以将构造方法中相同的代码提取出来,放到构造代码块中
静态代码快 : 类加载时执行, 优先于对象, 一般用来注册驱动
同步代码快 : 保证多线程的安全性
静态
类加载的过程中,在初始化类的时候, 会将所有的静态存入静态方法区(能执行的就直接执行了), 独一份
优先于对象, 更优先于所有非静态
唯一的, 公用的
静态的调用
静态只能调用静态 , 非静态可以调用静态
因为静态存在的时候, 非静态不一定存在, 如果直接调用, 有危险, 虚拟机不允许
非静态执行时,静态一定存在, 所以,可以放心的使用
单例模式
解决一个类在内存中如何只保持一个对象的问题
类为什么要在内存中只有一个对象?
节省创建对象的时间和存储对象的空间,而且不会占用静态方法区的空间
私有化构造方法
定义一个私有化的静态变量用来存放我们自己创建的对象
提供一个静态的方法,供用户获取对象
继承
子类类名 extends 父类类名
子类可以使用父类的非私有成员
提高了代码的复用性 和 维护性
类和类之间的关系加强了, 不符合编程的理念
注意事项
父类中的私有化成员不能继承
super关键字
构造方法, 子类会默认访问父类的空参构造,我们没写,编译器会自动加上
如果父类中没有空参构造, 子类会报错
需要我们手动调用父类的空参构造,或者去父类中添加一个空参构造
super() 必须是子类构造方法的第一条执行语句
方法的重写
子类和父类中出现了一模一样的方法, 这种现象叫做重写
方法名和参数列表必须一样
子类重写父类的方法, 意味着, 子类的方法对父类的方法形成了全遮挡
注意事项
子类的权限不能比父类低
父类的中的方法如果是静态的, 子类重写的时候也必须是静态的
父类的私有化方法不能重写, 因为压根看不见
instanceof关键字
用来比较对象是不是属于这个类或者这个类的父类