首页 > 代码库 > Java封装继承多态

Java封装继承多态

  Java中的类可以分为三种: 

  类:使用class定义且不含有抽象方法的类。

  抽象类:使用abstract class定义的类,它可以含有,也可以不含有抽象方法。

  接口:使用interface定义的类。

  类可以继承(extends)类,可以继承(extends)抽象类,可以继承(implements)接口。

  抽象类可以继承(extends)类,可以继承(extends)抽象类,可以继承(implements)接口。

  接口只能继承(extends)接口。

 

 1.封装

  类使得数据和对数据的操作集成在一起,从而对使用该类的其他人来说,可以不管它的实现方法,而只管用它的功能,从而实现所谓的信息隐藏。  封装隐藏了类的内部实现机制,从而可以在不影响使用者的前提下改变类的内部结构,同时保护了数据。

  封装时的权限区分:

  private:成员变量和方法只能在类内部被访问,具有类内部可见性。

      默认:成员变量和方法只能在包内部被访问,具有包内部可见性。

   protected:同一个包中所有的类,同一个项目中不同包中的子类。

  public:同一个项目中不同包中所有的类。

     详见下图:

     技术分享

  2.继承

  继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。这种技术使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用。继承是为了重用父类代码,同时为实现多态性作准备。

  在java中,所有的java类都直接或间的接的继承了java.lang.long.Object类.Object类是所有java类的祖先.在定义一个类时,没有使用extends关键字,那么这个类直接继承Object类。

  子类可以继承父类的:

  1)继承public和protected修饰的属性和方法,不管子类和父类是否在同一个包里.

  2)继承默认权限修饰符修饰的属性和方法,但子类和父类必须在同一个包里.

  无法继承的:

  1)无法继承private修饰的属性和方法

  2)无法继承父类的构造方法

  如果从父类继承的方法不能满足子类的需求,在子类中可以对父类的同名方法进行重写(覆盖),以符合要求,抽象方法必须被子类重写但是final修饰的方法不能被重写。抽象类不能实例化。

  3.多态

  方法的重写、重载与动态连接构成多态性。Java之所以引入多态的概念,原因之一是它在类的继承问题上和C++不同,后者允许多继承,这确实给其带来的非常强大的功能,但是复杂的继承关系也给C++开发者带来了更大的麻烦,为了规避风险,Java只允许单继承,即只能有一个父类,但是可以多个类实现同一个接口。

  转换是必须先判断是否为父、子类的关系,此处直接是父子类的关系故省去。

  向上转换:子类转换为父类。

class A{
  public void add(){
    System.out.println(“父类的方法”);
  }
}
class B extends A{
  public void add(){
    System.out,println("子类的方法");
  }
  A a=new B();
  //此处a.add()是执行的子类中的add()方法,即打印“子类的方法”
  a.add();
}

  向下转换:父类转换为子类。

class A{
  public void add(){
    System.out.println(“父类的方法”);
  }
}
class B extends A{
  public void add(){
    System.out,println("子类的方法");
  }
  A a=new A();
  B b=(B)a;//向下转换必须强制性转换
  //这里a.add()还是执行的子类中的add()方法,即打印“子类的方法”
  a.add();
}

 

参考:http://blog.csdn.net/zhengylsc/article/details/16902073

 

Java封装继承多态