34

复习-java-001

一.基本数据类型

  byte、boolean、char、string、int、short、long、float、double

二.java三大特性

  1.封装

    封装是实现面向对象程序设计的第一步,封装就是将数据或函数等集合在一个个的单元中(我们称之为类)。被封装的对象通常被称为抽象数据类型

    封装的意义:

    封装的意义在于保护或者防止代码(数据)被我们无意中破坏。在面向对象程序设计中数据被看作是一个中心的元素并且和使用它的函数结合的很密切,从而保护它不被其它的函数意外的修改

    封装提供了一个有效的途径来保护数据不被意外的破坏。相比我们将数据(用域来实现)在程序中定义为公用的(public)我们将它们(fields)定义为私有的(privat)在很多方面会更好。私有的数据可以用两种方式来间接的控制。第一种方法,我们使用传统的存、取方法。第二种方法我们用属性(property)

    使用属性不仅可以控制存取数据的合法性,同时也提供了“读写”、“只读”、“只写”灵活的操作方法。

    访问修饰符:

      Private:只有类本身能存取.
      Protected:类和派生类可以存取.
      Internal:只有同一个项目中的类可以存取.
      Protected Internal:是Protected和Internal的结合. 
      Public:完全存取.

  2.继承

    继承主要实现重用代码,节省开发时间

 

    继承(inheritance)通过 extends 关键字实现,其中SubClass称为子类,SuperClass称为父类,基类,或超类。

    修饰符如果是public,则该类在整个项目中可见;若无则该类只能在当前包可见;不可以使用private和protected修饰类

    

    Java中只支持单继承,每个类只能有一个直接父类。

    继承表达的意思是   is→ a 的关系,或者说是一种特殊和一般的关系,如Dog is Pet。同样,学生可以继承人,苹果继承水果等等。。。

        在Java中,所有的Java类都直接或间接的继承了Java.lang.Object类。

    注意:

    用final修饰的类,不能再被继承;同时用final修饰的方法不能被子类重写。

 

    final和abstract是功能相反的两个关键字,可以对比的记忆。

    abstract 可以用来修饰类和方法,不能用来修饰属性和构造方法,方法可以用来修饰类,方法和属性,不能修饰构造方法。

    java提供的很多类都是final类,如String类,Math类,它们不能再有子类。object类中一些方法,如果getClass(),notify(),wait()都是final方法

    只能被子类继承而不能重写,但是hashCode(),toString(),equals(Objecg obj)不是final方法,可以被重写。

 

   3.多态

     同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。

     多态的表现形式:重写和重载;

     重写和重载的区别:

 重载overloading:

1.重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。
重载Overloading是一个类中多态性的一种表现

2.Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。
调用方法时通过传递给它们的不同参数个数和参数类型。来决定具体使用哪个方法,这就是多态性。
3. 重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。
无法以返回型别作为重载函数的区分标准。

重写overriding:
1.父类与子类之间的多态性,对父类的函数进行重新定义。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写。

在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖;
2.若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。那么子类的对象如果调用该函数,一定调用的是重写过后的函数。
如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类;
3.子类重写父类的函数的时候,返回值类型必须是父类函数的返回值类型或该返回值类型的子类,不能返回比父类更大的数据类型

4.子类函数的访问修饰权限不能少于父类的

5.子类无法重写父类的private方法

三.抽象类和接口的区别
  

1、语法层面上的区别


    1)抽象类可以提供成员方法的实现细节(即普通方法),而接口中只能存在public abstract 方法;


    2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;


    3)接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;


    4)一个类只能继承一个抽象类,而一个类却可以实现多个接口,Java是单继承,多实现


  2、设计层面上的区别


    1)抽象类是对一种事物的抽象,即对类抽象,而接口是对行为的抽象。抽象类是对整个类整体进行抽象,包括属性、行为,但是接口却是对类局部(行为)进行抽象。


    2)抽象类所体现的是一种继承关系,而继承是一个 "is-a"的关系,而 接口 实现则是 "has-a"的关系。如果一个类继承了某个抽象类,则子类必定是抽象类的种类,而接口实现则是有没有、具备不具备的关系。比如:将鸟设计为一个类Bird,但是不能将 飞行 这个特性也设计为类,因此它只是一个行为特性,并不是对一类事物的抽象描述。此时可以将 飞行 设计为一个接口Fly,包含方法fly( ),对于不同种类的鸟直接继承Bird类即可,而鸟是否能飞(或者是否具备飞行这个特点),能飞行则可以实现这个接口,不能飞行就不实现这个接口。


    3)设计层面不同,抽象类作为很多子类的父类,它是一种模板式设计。而接口是一种行为规范,它是一种辐射式设计。对于抽象类,如果需要添加新的方法,可以直接在抽象类中添加具体的实现,子类可以不进行变更;而对于接口则不行,如果接口进行了变更,则所有实现这个接口的类都必须进行相应的改动。




还在更新中……^0^

  

posted on 2017-02-15 18:10  小确幸~  阅读(150)  评论(0编辑  收藏  举报

导航