zoukankan      html  css  js  c++  java
  • java 三大基本特征

    java中的面向对象的三大基本特征是:【封装】、【继承】、【多态】

    封装:对象要有一个明确的边界;边界的划分(对象各司其职、对象的粒度、对象的可重用性)

    • 属性(bean、pojo):私有的private,有set和get方法
    • 方法:公开或私有 ,public/private
    • 方法声明和实现(interface,implements)

    继承:共性放到父类,特性放到子类;父类 --> 子类 --> 一般

    • 关键字: extends
    • java中一个类最多只能有一个直接的父类,即单继承(具有简单性、树形结构)             
    • tip:java中要实现多继承,通过接口来实现。
    • 父类中所有属性和方法都能继承给子类;父类中的私有方法不能继承给子类。
    • java中的访问修饰符
      访问修饰符 访问权限 继承
      private 本类 不能继承
      default 本类+同包 同包子类可以继承
      protected 本类+同包+不同子包 可以继承
      public 公开 可以继承
      • 构造对象过程

         (1)分配空间
           (2)递归地构造父类对象
                  a. 父类 初始化属性
                  b. 父类 构造方法
          (3)初始化属性
          (4)调用构造方法

    • super
            super()  调用父类的构造方法,只能出现在构造方法的第一行
            super.方法名   super表示父类的对象,通过它去调用父类的方法
            注意:在写类的时候,一定要写默认无参的构造方法,如果一个构造方法的
                     第一句既不是this(),也不是super()时,那么就会在这里隐含的调用
                     他的父类的无参的构造方法,即隐含的有super()。

    多态:运行时多态(子类的对象放在父类的引用中,例如 Animal a=new Dog,子类对象当父类对象来使用。)

        • 多态原则:
                 (1)对象类型不变
                 (2)只能用引用调用其引用类型中定义的方法
                 (3)运行时,根据对象的实际类型去找子类覆盖之后的方法
                       例子:
                            有Animal类中有eat()和sleep()两个方法,sleep()中睡8小时;子类Dog中有
                            eat()方法,sleep()方法中睡6小时,还有wangwang()方法。
                            现创建Animal a=new Dog(); 不能调用a.wangwang(),调用a.sleep()输出睡6小时。
        • 对象的强制转换 :
                             格式: 引用 instanceof 类型
                                  引用所指的对象是否与类相符,返回值boolean值。
                           用法:
                                 Animal a=new Cat();
                                 if(a instanceof Dog)
                                 {
                                    Dog d=(Dog)a;
                                    d.wangwang();
                                  }
                           说明:如果只有Dog d=(Dog)a;运行时错误,因为a是Cat而不是Dog (多态原则第一条)
        • 多态的灵活变换
                 (1)用于参数列表上:
                                         public void m(A a){} 可以用A类的任何子类对象作为参数
                  (2)用在返回值上:
                                        public A m(){}  这个方法可能返回A类的任何子类对象
  • 相关阅读:
    【转】浅析Linux中的零拷贝技术
    我们使用 Kafka 生产者在发消息的时候我们关注什么(Python 客户端 1.01 broker)
    【转】Python 访问 HDFS
    HIVE 乱码以及 HUE SQL 语句兼容性的记录(遇到应该会一直更新)
    Kafka 深入核心参数配置
    【转】Hive 修改 table、column
    Redash(开源轻量级商业智能) 生产环境部署及实践 (without docker)
    【转】Linux开机启动管理---systemd使用
    Pyspark 最近使用的一些有趣姿势的梳理
    使用jquery操作select(获取选中option的值等)
  • 原文地址:https://www.cnblogs.com/codebj/p/10992788.html
Copyright © 2011-2022 走看看