java基础---封装、继承、多态

来源:互联网 发布:大学生网络惨案 编辑:程序博客网 时间:2024/05/21 17:26

面向对象的三个基本特征是:封装、继承、多态。


封装:

概念理解:
    封装是指将对象的状态信息隐藏在对象内部,不允许外部的程序直接访问对象内部的信息,而是通过该类所提供的方法来实现对内部信息的操作和访问。
    封装是面向对象编程语言对客观世界的模拟,客观世界里的属性都是被隐藏在对象内部,外界无法直接操作和修改。


封装的好处很多:
1、 隐藏类的实现细节
2、 让使用者只能通过预定的方法来访问数据,从而可以在该方法里加入控制逻辑,限制对属性的不合理访问。
3、 可进行数据检查,从而有利于保证对象信息的完整性。
4、 便于修改,提高代码的可维护性。


继承:

Java的继承具有单继承的特点,每个子类只能有一个直接父类。


继承的特点:
    Java的继承用extends关键字来实现,被继承的类成为父类,实现继承的类被称为子类。子类和父类的关系就比如现实生活中儿子与父亲的关系。子类继承父类所有的“特点”,子类是父类的扩展,子类是一种特殊的父类,获得父类的全部属性和方法。


多态:

        多态性是指一个方法可以有多个实现的版本。对于一个方法的多种实现,程序运行时,系统会根据方法的参数或调用方法的对象自动选择一个合适的方法执行,不会产生混乱。
        类的多态性表现为方法的多态性,讨论在不同层次的类中以及在同一个类中,多个同名方法之间的关系问题。方法的多态性主要表现在方法的重载和方法的覆盖。

方法的重载
    重载是指同一个类中的多个方法可以同名但是参数列表不同。
方法的覆盖
    覆盖是指子类重新定义了父类的同名方法。

多态性有两种:编译时多态和运行时多态。

    1. 编译时多态性
    对于多个同名方法,如果在编译时就能确定执行同名方法的哪一个,则称为编译时多态。方法的重载就是编译时多态。
    2. 运行时多态性
    如果在编译时不能确定多个同名方法的哪一个,只能在运行的时候才能确定,就称为是运行时多态。
    方法的覆盖表现两种多态性,当对象获得本类的实例时,是编译时多态,否则就是运行时多态。


假如有一个父类Person和一个子类Student,各自都有一个print方法。

Person p = new Person();  Student s = new Student();  p.print();//编译时多态性,执行Person中的方法  s.print();//编译时多态性,执行Student中的方法 

由于子类对象即是父类对象,父类对象与子类对象之间具有赋值相容性,父类对象能够被赋值为子类对象。

Person p2 = new Student();  p2.print();//运行时多态,执行Student类的方法。

此时,p2声明为父类对象却获得了Student的对象,这样有两种情况,如果子类覆盖了父类的方法,则执行子类的方法;否则执行父类的方法。在编译的时候,仅仅依据对象所属的类,系统无法确定到底该执行哪个类的方法,只有到运行的时候才能确定,故称为运行时多态。


注:多态---发生:普通方法调用

    多态---不发生:被static、private修饰的方法和对域的访问操作


参考文章来源:JAVA从零单排4-----继承、封装和多态详解


0 0