Java是一门面向对象编程的语言,就是常见的OOP(Object-oriented Programming),不止Java,其他的很多编程语言都是使用的OOP这种编程思想。
抽象:Java提供了抽象机制。抽象就是指程序员把需要解决的问题视为一个对象,并抽取待解决问题的任何概念化构件(人、猫、狗),并表示为程序中的对象。这种抽象的过程,把我们需要解决的问题,变得更加形象和简单。
另外值得一提的就是面向对象的五个基本特征:
1、万物皆为对象;
2、程序是对象的集合,程序之间通过发送消息来告知彼此需要执行的动作;
3、每个对象都由其他的对象组成;
4、每个对象都有自己的类型;
5、类型相同的对象可以接收相同的消息;
Java特征之一:封装
封装就是把一个对象所拥有的属性隐藏在自己内部,并且提供接口(在Java编程思想中,每个对象都有一个接口)给其他对象操作。
封装的好处就是可以保护对象自己的属性不被其他对象修改,只能使用,这是其一;另一方面就是使编程变得简单和清晰,每个对象可以通过封装拥有自己独特的属性并可以和其他对象之间通过接口访问。
对于自己的内部属性,在Java中有四个关键字对他们的访问权限作了限制:public、protected、default、private,访问权限如下图:
Java特征之二:继承
继承主要描述了两个有相似功能(或属性)的两个类之间的关系。其中一个类称为父类(或者超类、基类),另一个类称为子类(或者导出类、继承类),其中子类可能拥有比父类更多的特征,可以把子类看成是在父类基础上的一种拓展。
继承的好处就是在创建一个类之后,如果需要一个新类,并且新类与旧类有相似的特征时,新类可以继承旧类的原有特征,而不用自己再次定义,这样就简化了开发的成本。
继承使用关键字extends,在Java中,除接口外,类都是单继承的,因为如果多继承的话,如果有相同的特征方法,会造成困扰,不知道子类继承的是哪个父类的方法;接口可以多继承,是因为接口中的类都是abstract的,没有具体的方法体,不管继承哪一个都是一样的,但是不同接口中的名称和参数类型一样的方法,必须有相同的返回类型,不然也会造成继承的混淆。
Java特征之三:多态
多态是指不同的类的对象,对相同的消息,做出不同的行为。
封装通过合并特征和行为来创建新的数据类型。继承允许将对象视为它自己本身的类型或者基类型来加以处理。而多态的作用则是消除类型之间的耦合关系。
多态有向上转型和向下转型:
1、向上转型:子类转成父类
Father() father = new Child();
这是自动转型,不需要别的操作
2、向下转型:父类转成子类
如果写:Child() child = new Father()是无法编译通过的,这时候需要强转:
先向下转型:Father() father = new Child();
然后强转:Child() child = (Child) father;
并且在继承关系中,是父类的引用指向了子类,子类重写了父类的方法,比如:Father() father = new Child();
如果调用 father.test() 方法的话,其实调用的是子类中重写的父类的方法,而不是调用的父类中的方法。