面向对象特性一
面向对象特性
封装
- 定义:隐藏对象得属性和实现细节, 仅仅对外提供公共访问得方法
- 好处: 将变化隔离, 便于使用; 提高重用性,安全性。
- 原则:将不需要对外提供得内容隐藏起来, 把属性隐藏起来,提供公用得方法对其访问。
- this: 式对象得引用代表对象。作用是减少命名得冲突。
- static:是静态修饰符,是静态关键字。
特点:
- 通过它实现对象之间数据得共享
- 可以通过类名直接调用
- 静态随着类加载而加载, 它优于对象存在
注意点:
- 某个对象需要特别持有得数据是不能够被静态修饰否则, 共享
- 因为静态方法优先于对象加载, 所以不可访问非静态得方法
- 静态方法中没有对象这个概念, 也就不能用对象所特有得super, this 关键字得使用
- 主函数是静态得, 加载顺序是和静态方法平级,按照排列顺序加载。
3.什么时候定义静态:
公用同一个方法或者变量得时候可以定义成静态得
4. 成员变量和静态变量得区别
- 成员变量属于对象,也被称为实例变量。静态对象属于类, 被称为类对象
- 成员变量存放在堆中,静态变量存放在方法区中
- 成员变量随着对象创建而存在, 随着对象被回收, 而静态变量随着类加载而存在, 随着类得消失而消失,所以静态变量得生命周期较长
- 成员变量指能被对象所调用, 静态对象可以被对象调用, 也能被类名调用。
静态代码块、构造代码块、构造函数同时存在时的执行顺序:
静态代码块> 构造代码块 > 构造函数;
关于设计模式:
就是一套经验总结出来得模式或者称为棋谱,java中有23种设计模式
5. 单例设计模式
思想:
- 不让其他程序创建该类对象
- 在本类中创建一个本类对象
- 对外提供方法
第一点:可将构造方法私有化实现。
代码体现:
//饿汉式
class Single{
private Single(){} //私有化构造函数。
private static Single s = new Single(); //创建私有并静态的本类对象。
public static Single getInstance(){ //定义公有并静态的方法,返回该对象。
return s;
}
}
//懒汉式:延迟加载方式。
class Single2{
private Single2(){}
private static Single2 s = null;
public static Single2 getInstance(){
if(s==null)
s = new Single2();
return s;
}
}
继承
-
好处: 提高代码复用性, 让类与类之间产生了关系提供了多态的前提。
-
父类的由来:多个类不断向上抽取共性的内容
-
Java中只支持单继承不支持多继承,因为多继承让项目变得更加复杂。
-
super:父类内存空间中的引用
-
this: 本对象的引用
- 第一:两者是否同时出现:因为都要定义在第一行所以不能
- 第二:为什么要定义在第一行:这两者是用于调用构造方法的, 构造方法初始化操作要先于完成
6. 什么时候使用继承:当符合is-a
方法覆盖时候,注意两点:
子类覆盖父类, 必须要保证子类的访问权限不低于父类的访问权限
- final特点:
- 这个关键字是一个修饰符, 可以修饰类, 方法, 变量
- 被final修饰的类是一个最终类, 不可以被继承
- 被final修饰的方法是最终方法, 不可以被覆盖
- 被final修饰的变量是一个常数,只能赋值一次。