做测试也挺久了,大学时没有认真学会java,现在各个企业对测试人员要求越来越高,掌握编程语言的已经成了必备的技能;自己也断断续续学了很多次java,但都没有好好得把java学好,在要面临跳槽时总觉得自己的简历上总是少些亮点。终于下定决心,每天抽出2个钟学习java,为了在以后的简历中可以写上懂得java。

一、面向对象

现实世界中,随处可见的一种事物就是对象,对象是事物存在的实体,如人类、书桌、计算机、高楼大厦等。把解决问题的方式简单化,于是就会思考这些对象是由哪些部分组成。通常对象分两部分:静态和动态部分。静态,即是不能动的部分,这部分称为“属性”,任何对象都会具备自身属性,如:一个人,高矮,胖瘦性别、年龄等属性。然而具有这些属性的人会执行哪些动作也是一个值得探讨的部分,这个人可以哭泣、微笑、说话、行走,这些是这个人具备的行为(动态部分),人类通过探讨对象的属性和观察对象的行为了解对象。

二、类

类是封装对象的属性和行为的载体,反过来说具有相同属性和行为的一类实体被称为类。例如一个鸟类,鸟类封装了所有鸟的共同属性和应具有的行为,其结构如图所示:

JAVA面向对象理解_JAVA

三、封装

1、封装是面向对象编程的核心思想,将对象的属性和行为封装起来,而将对象的属性和行为封装起来的载体就是类,类通常对客户隐藏其实现细节,这就是封装的思想。封装的原则是使对象以外的部分不能随意的访问和操作对象的内部属性,从而避免了外界对对象内部属性的破坏。

2、可以通过对类的成员设置一定的访问权限,实现类中成员的信息隐藏。

    private:类中限定为private的成员,只能被这个类本身访问。如果一个类的构造方法声明为private,则其它类不能生成该类的一个实例。

    default:类中不加任何访问权限限定的成员属于缺省的(default)访问状态,可以被这个类本身和同一个包中的类所访问。

   protected:类中限定为protected的成员,可以被这个类本身、它的子类(包括同一个包中以及不同包中的子类)和同一个包中的所有其他的类访问。

     public:类中限定为public的成员,可以被所有的类访问。

四、继承 

     面向对象编程 (OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类 的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。 

      通过继承创建的新类称为“子类”或“派生类”。

      被继承的类称为“基类”、“父类”或“超类”。 

      继承的过程,就是从一般到特殊的过程。 

      要实现继承,可以通过“继承”(Inheritance)和“组合”(Composition)来实现。 

     在某些 OOP 语言中,一个子类可以继承多个基类。但是一般情况下,一个子类只能有一个基类,要实现多重继承,可以通过多级继承来实现。 

       继承概念的实现方式有三类:实现继承、接口继承和可视继承。 

五、多态

       对象的多态性是指在父类中定义的属性或方法被子类继承之后,可以具有不同的数据类型或表现出不同的行为。这使得同一个属性或方法在父类及其各个子类中具有不同的语义。例如:"几何图形"的"绘图"方法,"椭圆"和"多边形"都是"几何图"的子类,其"绘图"方法功能不同。

      Java的多态性体现在两个方面:由方法重载实现的静态多态性(编译时多态)和方法重写实现的动态多态性(运行时多态)。

   1、编译时多态:在编译阶段,具体调用哪个被重载的方法,编译器会根据参数的不同来静态确定调用相应的方法。

  2、运行时多态:由于子类继承了父类所有的属性(私有的除外),所以子类对象可以作为父类对象使用。程序中凡是使用父类对象的地方,都可以用子类对象来代替。一个对象可以通过引用子类的实例来调用子类的方法。

六、方法重载

     方法重载是让类以统一的方式处理不同数据类型的手段。

    一个类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法。

      返回值类型可以相同也可以不相同,无法以返回型别作为重载函数的区分标准。

七、方法重写

  子类对父类的方法进行重新编写。如果在子类中的方法与其父类有相同的的方法名、返回类型和参数表,我们说该方法被重写 (Overriding)。

      如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。

子类函数的访问修饰权限不能低于父类的。