zoukankan      html  css  js  c++  java
  • Java面向对象

    面向对象

      面向对象是一种编程思想

    面向对象的特点

      1、面向对象是一种常见的思想,是符合人们思考习惯的;

      2、面向对象可以将复杂的问题简单化;

      3、让原来过程中的执行者,变成了对象中的指挥者;

      Java中认为任何一个事物都是对象;

    类和对象的关系

      类是对现实中的事物的描述;

        类是怎么样描述事物的? 

          1、属性      2、行为;

        类的成员:

          1、成员变量  2、成员方法;

      对象是通过类创建的 实实在在 存在的 个体实例;

      对象可以封装特有的数据;

      举例:  一辆汽车具备轮胎数、颜色……

                   学生对象封装了 姓名 年龄 身高等数据;

      通过new关键字 来创建一个对象;

      通过 对象.成员 的方式,可以调用该对象的属性及方法;

    成员变量和局部变量的区别

      作用域不同

       1、成员变量定义在类中,整个类都可以访问;

        局部变量定义在方法、语句、局部代码块中,只有所属区域可以访问;

      存储位置不同

       2、成员变量存储于堆内存中;

        局部变量存储于栈内存中;

      生命周期不同

       3、成员变量 随着对象的创建而创建 ,对象的消失而消失;                                

        局部变量 随着所属区域的执行而创建 ,执行结束而消失;

      初始化不同

       4、成员变量 有 默认初始值;                                                                            

        局部变量 没有默认初始值;

      属性的显示初始化:

        对成员变量赋一个,默认的,习惯性的初始值;

      匿名对象  没有名字的对象;

        什么时候使用匿名对象:其实就是创建对象的简写形式,当只对对象的方法进行一次调用时,可以简化成匿名对象;

       特点:  1、匿名对象一旦被创建,就已经是垃圾内存;

          2、如果匿名对象被作为参数进行传递,则不会被立刻变成垃圾内存,因为方法的引用会指向该内存;

    封装

      即:封闭 包装

      定义:隐藏对象的实现细节,对外提供了访问方式;

      特点      1、提高了代码的安全性  2、便于使用  3、将变化隔离  4、提高了代码的复用性;

      Java bean (咖啡豆)- 就是一个普通的Java类,但是一个Java类如果想成为一个bean的话,必须符合三个条件:

          1、所有属性私有;-》保护属性值不被破坏;

          2、提供属性的公有的get和set方法;-》可以给属性添加约束条件,或者限定不同权限的用户是否可以获取到属性的值;

          3、必须提供无参的构造方法;-》Java bean多是用在框架中,框架需要使用bean的无参构造方法生成对象;

            建议所有的类都要写成bean的形式;

    Function - 函数

    Method -  方法

      构造方法(构造器):

        1、方法名必须和类名一致;

        2、没有返回值类型,任何返回值类型都不能写;

        3、构造方法中一定不能用return来返回一个值;

        4、可以有参数,也可以没有参数;

        5、一般情况下,构造方法是公有的;

       构造方法的作用是用来生成对象的,换句话说,一个类如果想要被实例化(生成对象),那么必须要有构造方法;

        如果没有给类定义任何构造方法,那么JVM会自动的为这个类分配一个无参的空构造方法;

        如果已经定义了任何的构造方法,则JVM不会再自动分配无参的空构造方法;

      当我们的对象中有属性需要初始化的时候,使用构造方法是最好的选择;

    继承

      发生在两个类之间,被继承的类叫做父类(基类,双亲类,超类),继承类叫做子类(派生类);

        在Java中,使用extends关键字实现继承;

        1、继承关系一旦确立,子类就继承了父类所有的属性和方法,但是不包括私有成员和构造方法;

        2、有继承关系的类,如果实例化子类的对象,首先会生成其父类的对象,然后再生成子类的对象;

        3、在生成父类对象时,默认是调用父类的无参构造方法来创建对象的,如父类没有无参的构造方法,则程序会出现编译错误;

          这时候,子类中必须显式的调用父类的某一个有参构造方法来构造父类;

      super关键字的用法:

        代表的是父类对象;

         1、子类中任何方法中(成员、构造)都可以用super.属性名,或者 super.方法(参数列表)来引用父类对象的属性和方法;

         2、super(参数列表)- 调用父类的某个构造方法,必须用在子类的构造方法中,并且必须是构造方法中的第一句话;

      继承的作用

         1、继承可以扩展父类的属性和方法;

         2、继承也是代码实现复用性的一个重要的手段;

       严禁代码的拷贝 - 不能出现冗余代码(相同代码)- 代码的坏味道; -》 代码的复用性;

       什么样的两个类之间有继承关系?

        初步判定:A和B两个类,如果满足 A is a king of B ,则认为A和B有继承关系;

        科学判定:里氏替换原则 - A和B两个类,只有A类能够完成替代B类所有特征和行为的时候,A和B才有继承关系;

        换句话说,如果A继承B,继承关系确定,子类对象可以完全替代父类对象;

             根据里氏替换原则  B b = new A(); - 父类引用指向子类对象;- 多态 的 基础 ;

    多态

      - 解耦合 - 开闭原则 -> 对扩展开放,对修改关闭;目标:高内聚 低耦合

         耦合的缺点:

        1、灵活性差  2、可维护性差  3、可扩展性差

      

      什么是多态

        字面意义 - 一个事物的多种形态;

        编码角度 - 一个方法的多种实现;

        设计理念 - 将做什么和怎么做分开;

      如何实现多态

        1、必须有泛化(继承、实现)关系;  2、必须有方法的重写;  3、必须有父类(接口)引用指向子类(实现类)对象;

      方法的重载和重写:

        重载 - 方法名相同,参数列表不同(个数或类型不同)的方法,称之为重载;

        重写 - 在子类中,有和父类中同方法名,同参数列表,同返回值类型的成员方法;称之为重写;

          注:重写过程中,子类中方法的访问限制符必须大于等于父类中方法的访问限制符;

            private < default < protected < public

          当父类引用指向子类对象时:Father s = new Son();

          调用的方法是谁的方法,取决于对象的类型,而不是引用的类型;

          调用的属性是谁的属性,取决于引用的类型,而不是对象的类型;

        在工作中,不建议在父类和子类中定义同名的属性;

          

  • 相关阅读:
    HttpRunner接口自动化测试框架
    使用Appium 测试微信小程序和微信公众号方法
    WiFi无线连接真机进行Appium自动化测试方法
    idea tomcat 乱码问题的解决及相关设置
    解决idea导入maven项目缺少jar包的问题
    Docker php安装扩展步骤详解
    Python之No module named setuptools 安装pip
    MySQL中group_concat函数 --- 很有用的一个用来查询出所有group by 分组后所有 同组内的 内容
    Nginx如何来配置隐藏入口文件index.php(代码)
    vueThink框架搭建与填坑(new)
  • 原文地址:https://www.cnblogs.com/coffeerun/p/5810589.html
Copyright © 2011-2022 走看看