美文网首页
面向对象编程

面向对象编程

作者: Hammy | 来源:发表于2018-01-30 14:08 被阅读0次

    今天是Java复习的第一天,希望自己可以一直坚持下去每天写自己的技术博客.如果有问题,希望大家可以指出.

    Java面向对象概述

    1.什么是面向对象

    面向对象编程的核心是对象两个字,它是一种基于对象的编程思维;对象中可能包含的数据,以字段的形式被称为属性;实现的功能,以代码块的形式被称作为方法.对象的一个功能就是对象的程序可以访问和修改对象关联的数据字段.
    在面向对象编程中,计算机程序之间的交互是通过对象进行设计的.但主流最受欢迎的基于类的,类可以被看作是对象的实例.也可以通过类判断他们的类型.

    2.为什么要面向对象

    对象提供服务

    设计程序的时候可以将对象设想为一个服务提供商,它提供服务给用户,解决不同的问题.

    隐藏实现的细节

    实际上,真正意义对程序操作的可以分为两类人:1.类的维护者.2:类的使用者.类的维护者负责维护自己创建的类,并且保证类的内部结构不被修改.类的使用者主要就是使用类给他提供的服务,我并不关心你内部是怎么实现的.
    所以隐藏内部实现的细节的优点:

    • 保证类内部结构的安全
    • 在对功能进行迭代的情况下,可以不影响使用者(只报漏给使用者服务方法)
    • 使用者无须关心实现细节,不会看见无数不清晰的方法让自己头大.

    Java采用三个显示关键字和一个隐示关键字来设置类的边界

    作用域 当前类 同一package 子孙类 其他package
    public Y Y Y Y
    protected Y Y Y F
    default Y Y F F
    private Y F F F

    代码的重用

    代码重用是面向对象编程很重要的一部分组成.重用可以减少代码量,是代码设计上更简练
    面向对象有组合和继承两种代码重用的实现方法
    -组合是利用已经存在的对象,在实现功能时调用存在对象的方法
    -继承则是继承其他类(父类)的属性和方法

    3.怎么面向对象

    概念及详解

    类是具有相同属性和方法的对象的集合,它为属于改类的对象提供统一的抽象描述.
    Java中类的实现包括两个部分:类生命和类体

    • 类声明

    [public][abstract][final] class className
              [extends superClassName][implements interfaceNameList]
    

    public,abstract,final说明了类的属性,className为类名,superClassName是父类名.interfaceNameList为类实现的接口列表.

    • 类体

    class className{
    //成员变量
    [public][protected][private][static][final][transient][volatile]type variableName
    //成员方法
    [public][protected][private][static][final][abstract][native][synchronized] returnType methodName(paramList)[throws exceptionList]{
    statements
    }
    }
    
    • 成员变量关键词含义
      • static:静态变量(类变量)
      • final:常量;
      • transient:暂时性常量,用于对象的持久化
      • volatile:用于并发线程的共享
    • 方法成名关键字的含义
      • static:类方法;
        -abstract:抽象方法,没有方法体;
        -final:方法不能被重写;
        -native:集成其他语言代码;
        -synchronized:控制多个并发线程的访问;

    对于简单类型来说,Java实现的值传递.引用类型,传递的是数据在内存中地址.

    • 方法体

    方法体是对方法的实现,它包含方法的声明和合法的java指令.方法体声明的变量作用域变量内部.如果局部变量与类变量相同,则类的成员变量会被隐藏.

    • 构造方法

    构造方法是一个特殊的方法,Java每个类都有构造方法,用来初始化该类的一个对象,与类名称保持一致&没有返回值

    接口

    所有对象尽管功能不同,但是他们都属于某一系列对象的部分,这对对象具有通用的特征和行为.
    接口的存在就是将具备这些统一特征和行为的对象进行统一规范

    封装

    封装性指的是尽可能隐藏对象的内部实现细节,从而达到保护对象内部结构的作用.还可以通过封装对于使用者来说只管用,不需要关心其他的实现内容.

    继承

    继承是可以将已存在类的特征和属性,不需要重写编写新类.通过extends关键字将这部分在新类中需要实现的内容复制过来,然后根据自己的需求进行重写或者扩展功能.这样就实现了代码的复用.

    多态

    面向对象三大特征:继承,封装,多态.从一定的角度来看,封装和继承几乎都是为了多态而准备的.

    多态的定义:指允许不同子类型的对象对同一消息做出不同的响应,简单来说就是同样的对象调用了同样的方法但是做了不一样的事情.

    实现多态的技术:动态绑定,是指在执行期间判断所引用对象的实际类型,根据实际类型调用其相关的方法.

    多态的作用:消除类型之间的耦合关系
    例如:在word上f1的作用是提供word的帮助.windows桌面f1就是提供windows的帮助.

    多态存在的三个必要条件

    • 要有继承
    • 要有重写
    • 父类引用指向子类对象

    重写

    子类对父类的方法进行重写编写,要求和父类的参数列表,返回类型一致.
    访问权限不能低于父类.

    重载

    一个类可以创建多个方法,让他们都有相同的名字,但具备不同的参数个数和顺序.
    这样做的目的就可以简化使用者的对于功能相似,参数要求不同的方法的简练性.
    返回值可以相同也可以不相同,但是不能通过这个来区分是否重载.

    以上内容参考了
    Java面向对象概述

    相关文章

      网友评论

          本文标题:面向对象编程

          本文链接:https://www.haomeiwen.com/subject/aznqzxtx.html