java的三大特性

一、封装
封装性就是把类(对象)的属性和行为结合成一个独立的相同单位,并尽可能隐蔽类(对象)的内部细节,对外形成一个边界,只保留有限的对外接口使之与外部发生联系。封装的特性使得类(对象)以外的部分不能随意存取类(对象)的内部数据(属性),保证了程序和数据不受外部干扰且不被误用。
l  类本身就实现了封装功能,此处类Animal定义了两个属性,两个构造函数,其只属于Animal类。
l  通过访问修饰符来限制对类的属性和方法的访问,各修饰符含义如下:
Private:成员变量和方法只能在类内被访问,具有类可见性
默认: 成员变量和方法只能被同一个包里的类访问,具有包可见性。
Protected:可以被同一个包中的类访问,被同一个项目中不同包中的子类访问
Public:可以被同一个项目中所有的类访问,具有项目可见性,这是最大的访问权限
二、继承
创建子类一般形式如下:
    class 类名 extends 父类名{
        子类体
    }  
1、 继承是面向对象的三大特征之一,也是实现代码复用的重要手段。Java的继承具有单继承的特 点,即只能继承自一个父类,每个子类只有一个直接父类,但是其父类又可以继承于另一个类,从而实现了子类可以间接继承多个父类,但其本质上划分仍然是一个父类和子类的关系。
2、Java的继承通过extends关键字来实现,实现继承的类被称为子类,被继承的类称为父类(有的也称其为基类、超类),父类和子类的关系,是一种一般和特殊的关系。就像是水果和苹果的关系,苹果继承了水果,苹果是水果的子类,水果是苹果的父类,则苹果是一种特殊的水果。
3、Java使用extends作为继承的关键字,extends关键字在英文是扩展的意思,而不是继承。为什么国内把extends翻译成继承呢?除了与历史原因有关外,把extends翻译成为继承也是有其道理的:子类扩展父类,将可以获得父类的全部属性和方法,这与汉语中得继承(子辈从父辈那里获得一笔财富成为继承)具有很好的类似性。
值得指出的是:Java的子类不能获得父类的构造器。
4、子类与父类的变量、方法关系
子类可以继承父类的所有特性,但其可见性,由父类成员变量、方法的修饰符决定。对于被private修饰的类成员变量或方法,其子类是不可见的,也即不可访问;对于定义为默认访问(没有修饰符修饰)的类成员变量或方法,只有与父类同处于一个包中的子类可以访问;对于定义为public或protected 的类成员变量或方法,所有子类都可以访问。
子类中可以声明与父类同名的成员变量,这时父类的成员变量就被隐藏起来了,在子类中直接访问到的是子类中定义的成员变量。
子类中也可以声明与父类相同的成员方法,包括返回值类型、方法名、形式参数都应保持一致,称为方法的覆盖。
 
如果在子类中需要访问父类中定义的同名成员变量或方法,需要用的关键字super。Java中通过super来实现对被隐藏或被覆盖的父类成员的访问。super 的使用有三种情况:
l  访问父类被隐藏的成员变量和成员方法;
      super.成员变量名;
l  调用父类中被覆盖的方法,如:
      super.成员方法名([参数列]);
l  调用父类的构造函数,如:
     super([参数列表]);
super( )只能在子类的构造函数中出现,并且永远都是位于子类构造函数中的第一条语句。


三、多态(Polymorphism)
多种形式的一种体现

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

    (2)  Java 的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。
调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性。

    (3) 重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准。

猜你喜欢

转载自blog.csdn.net/langxian_168/article/details/69945852