封装、继承、多态

来源:互联网 发布:电脑数据删除怎么恢复 编辑:程序博客网 时间:2024/06/02 21:21
一、封装

    封装性就是把类的属性和行为结合成一个独立的相同单位,
    并尽可能隐蔽类的内部细节,对外形成一个边界,只保留有限的对外接口,使之与外部发生联系。
    封装的特性使得类以外的部分不能随意存取类的内部属性,保证了程序和数据不受外部干扰且不被误用。

二、继承

    1、继承是实现代码复用的重要手段。
         Java的继承具有单继承的特点
   
     2、子类与父类的变量、方法关系

子类可以继承父类的所有特性,但其可见性,由父类成员变量、方法的修饰符决定。

对于被private修饰的类成员变量或方法,其子类是不可见的,也即不可访问;

对于定义为默认访问(没有修饰符修饰)的类成员变量或方法,只有与父类同处于一个包中的子类可以访问;

对于定义为public或protected 的类成员变量或方法,所有子类都可以访问。

子类中可以声明与父类同名的成员变量,这时父类的成员变量就被隐藏起来了,在子类中直接访问到的是子类中定义的成员变量。

子类中也可以声明与父类相同的成员方法,包括返回值类型、方法名、形式参数都应保持一致,称为方法的覆盖。

 

如果在子类中需要访问父类中定义的同名成员变量或方法,需要用的关键字super。Java中通过super来实现对被隐藏或被覆盖的父类成员的访问。super 的使用有三种情况:

l  访问父类被隐藏的成员变量和成员方法;

      super.成员变量名;

l  调用父类中被覆盖的方法,如:

      super.成员方法名([参数列]);

l  调用父类的构造函数,如:

     super([参数列表]);

super( )只能在子类的构造函数中出现,并且永远都是位于子类构造函数中的第一条语句。


三、多态

    多态性是指在继承关系中的父类中定义的属性或方法被子类继承之后,可以具有不同的数据类型或表现出不同的行为。这使得同一个属性或方法在父类及其各子类类中具有不同的含义。

    Java引用变量有两个类型:一个是编译时类型,一个是运行时类型。编译时的类型由声明该变量时使用的类型决定,运行时的类型由实际赋给该变量的对象决定。如果编译时类型和运行时类型不一致,就会出现所谓的多态


例:动物类

class Animal{  void eat(){    System.out.println("animal eat");  }}class Dog extends Animal{  void eat(){    System.out.println("Dog eat bone");  }}
主方法
public static void main(String[] args){  Animal a;  a = new Animal();  a.eat();//编译是类型和运行时类型完全一样,因此不存在多态    a = new Dog();  a.eat();//编译时类型和运行时类型不一样,存在多态}





0 0