谈谈面向对象
本文只介绍面向对象的概念,不进行代码编写,其中的理解都是个人的鄙见
我们分析问题时可以将问题分为简单的俩个方向进行讨论解决,面向对象和面向过程,面向过程就是一些简单的可以使用线性思维解决的问题,一条线就可以顺下来解决,而面向对象就是那些无法使用单一的线性思维进行解决的问题,需要将一大块分解,逐个击破,在实际的开发中,二者相辅相成并不是出于对立面的,解决复杂问题时,我们需要使用面向对象方式便于宏观上把握事物之间的复杂关系,具体到微观操作,我们还是需要使用面向过程来进行解决
面向对象的三大特征(或者4大基本特征)
- 抽象:一般不将其列为面向对象的基本特征,但我们真正使用面向对象方式解决问题时,需要先将事物进行抽象为具体类对象。
- 封装:封装,就类似我们使用的电视机,电脑,我们只需要使用其便利的功能,不需要知道具体电器内部的构造以及组件名称,其实我们将各种组件以及组件带来的便捷功能进行包装进入电器这个大箱子内部的过程就是封装,封装属性的关键字是get,set。
- 继承:继承,就类似现实中的父与子的关系,说有的孩子长相或者说话办事的方式像他的父亲,这就属于继承的内容,也就是说,子类可以从父类继承某些内容(属性,方法),关键字extends,如果当前类没有指定父类,那么他的父类默认是object,在使用面向对象继承这一特性时,可以实现多层继承,但是不可以多继承,也就是不能实现现实中按照血缘关系,一个儿子可以有多个父亲的情况。
- 多态:创建一个子类对象,赋给父类引用对象,调用父类方法时,子类方法进行了重写,就调用子类的方法,输出结果不同,多种形态,继承是多态的前提,必须实现重写,父类引用子类对象(向上转型),子类引用父类对象,强制转换(向下转型)。
static关键字
static关键字: static是静态的意思,一个类中主要包括成员方法,成员变量,构造方法,代码块,内部类
static关键字修饰除了构造方法之外的其他成员,并且只在加载类时执行一次,下面来进行分别介绍
1.static修饰成员方法: static修饰成员方法时被修饰的成员方法被称为类方法,可以通过类名.方法(参数)进行调用,不需要实例化对象,调用该对象的方法
2.static修饰成员变量:static修饰成员变量时被修饰的成员变量被称为类变量,类内部的所有成员共享一份类变量,可以直接通过类名.类变量进行调用
3.static修饰代码块:static修饰代码块时改代码块被称为静态块
4.static修饰内部类:static修饰内部类时,被修饰的内部类可以当作一个普通类进行使用(普通类不允许使用static关键字进行修饰)
==和equals的区别
1、==:判断的是基本类型数据,判断俩个数据的数值是否相等,及判断值相等
2、equals:判断的是引用类型数据,判断的是俩个数据的地址是否相同,及判断址相等
访问修饰符
访问权限 | 类 | 包 | 子类 | 其他包 | 补充 |
---|---|---|---|---|---|
public | √ | √ | √ | √ | 字面意思使用public修饰的变量,类或其他,都可以用 |
protect | √ | √ | √ | × | 继承的类可以访问,以及和private一样的访问权限 |
default/friendly | √ | √ | × | × | 包访问权限,即在整个包内均可被访问 |
private | √ | × | × | × | 除类型创建者和类型的内部方法之外任何人都不能访问的元素 |