面向对象

来源:互联网 发布:股票精灵软件 编辑:程序博客网 时间:2024/06/05 21:57

面向对象就是将所有的事和物都进行归类,抽象。但是在计算机编程中,有时候是用计算机来捕获一些动作,或者用计算机来做一些动作。那么这么动作也要进行归类,形成一个动作类,那么动作的实现就是这个类的里面的某个方法,用方法来实现动作。



面向对象有三个特性

1.封装:

  封装就是定义java类中将控制域(Field)和方法被外部访问的权限,有4中  public  private  protected  default  在文章(http://blog.csdn.net/lixujunk/article/details/39931267)有做用法解释,目的就是为了保护某些作用域不被随便修改,另外一个作用是隐藏类的细节。一般是隐藏类的域,将方法暴露出来,利用方法控对这些域进行访问和操作。


2.继承:

  继承用关键字  extends 子类将继承父类的所有的非private和default 类型的域和方法

  在java中有子类继承父类,子接口继承父接口,

  java是单继承的模式,C++是多继承的模式,java的子类只能有一个父类,为了弥补多个没有办法多继承的优点,便使用接口的方式,java一个类可以实现多个接口,当然  接口的好处不只是为了这个,还有就是java的面向接口编程。


1.多态:

  多态就是同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。

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

  举个例子;上图中 Sub 为子类 ,Base 为父类,箭头为继承关系


public static void main(String[] args){ Base base = new Base(); base.test(); //运行 ① 中的test方法 Sub sub = new Sub(); sub.test(); //运行 ② 中的test方法 Base b_s=new Sub(); b_s.test(); //运行 ② 中的test方法}


 Base b_s=new Sub();这句代码中对象b_s编译时的类型是Base,但运行时的类型是Sub,运行时的类型是后期绑定的,绑定时子类的方法覆盖父类的方法(static和final 方法除外,private也是属于final方法的)。也就出现了多态的现象。



 多态成立的3个条件是a 继承  b 重写父类的方法  c 父类引用指向子类对象




0 0
原创粉丝点击