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

    面向对象:
    1, 面向过程的思想(合适的方法出现在合适的类里面)
    准备去一个地方:
    先买车, 挂牌, 开导航, 踩油门, 过黄河, 穿越珠穆朗玛峰...

    2, 面向对象的思想
    我开着车去, 车怎么去随便
    所有去这个地方的信息, 全部封装在这个车里面, 我不了解这个车是怎么运行的, 我也不需要了解, 我只知道我能到达这个地方就行了

    面向对象的基本思想是, 从现实世界中客观存在的事物出发, 来构造软件系统, 并在系统的构造中尽可能的运用人类的自然思维方式, 面向对象是目前人与计算机沟通最简单的语言思想

    3, 什么是类, 什么是对象?
    对象是类的一种实例化, 对象用"属性"和"方法"来对应描述事物所具有的"静态属性"和"动态属性"

    类是用于描述同一类形的对象的一个抽象的概念, 类中定义了这一类对象应该具有的"静态属性"和"动态属性"

    类可以看成是一类对象的模板, 对象可以看成该类的一个具体实例

    举个栗子(什么是瓶子-->一类事物的抽象-->静态属性,动态属性)
    举个栗子(人-->学生-->张三)

    什么是类
    学生是类, 瓶子是类, 老师是类
    什么是对象
    这个学生是对象, 这个瓶子是对象, 这个老师是对象, 符合这类事物的特征的某一个东西, 叫对象

    领导-->显示职工的姓名
    职工:
    静态属性:
    姓名: 张三
    年龄: 24
    工资: 3000
    动态属性:
    显示姓名
    显示年龄
    修改姓名
    领取工资

    4, 类与类之间的关系
    关联关系(最弱的一种关系):
    不好下一个定义, (A类中某个方法的参数是B类的某一个对象)
    举个栗子(学生<--学校-->老师)
    老师要讲课, 这是一个方法, 要传个参数进去, 参数是学生对象
    继承关系(避免多重继承)
    什么是一种什么
    举个栗子(运动员-->球类运动员-->篮球运动员)
    聚合关系(聚集, 组合)
    什么是什么的一部分
    举个栗子(球队-->(王队长, 队员))
    组合----人: 头, 身体

    聚集:构成这个类的这部分可以是这个类的, 也可以是另外一个类的,
    组合:每一部分只属于一个类
    实现关系
    接口:只管定义方法, 怎么实现由子类去做
    举个栗子(接口(开车的方法), A类可以实现, B类也可以实现)

    5, java类的定义, 对象和引用
    java: 万物皆对象, 处处皆需求

    对象是对属性(成员变量, 静态属性)和方法(函数, 动态属性)的封装

    java中提供的类, 程序员自己定义的类

    面向对象更容易达到一种境界:
    Reusable(重用性), Extensibility(可扩展性)
    面向组件(Component)--比对象更高层次的抽象
    WebService

    成员变量和局部变量的区别
    成员变量的初始化(1-7.图)
    成员变量可以是java中任意一种数据类型(基础数据类型和引用类型)
    成员变量可以初始化, 也可以不初始化(java默认初始化)
    成员变量的作用范围-->整个类

    引用类型, 见1-6

    类和对象的关系
    C c1 = new C();
    C c2 = new C();// c1, c2在这里是局部变量

    7, 构造函数
    在使用 new 来创建一个对象的时候就是调用的这个类的一个构造方法(构造函数), 构造方法名与类同名, 并且没有返回值(没有返回值也不要写void)

    空参的构造函数和有参数的构造函数

    命名规则!!!!!!!!!!

    9, 关键字this, static, package和import语句


    10, 访问控制, 权限修饰符(public private default protected)
    puclic class 类名 {
    private 类型 属性1;
    private 类型 属性2;

    set, get
    }
    11, 面向对象的三大特性: 封装, 继承, 多态
    封装(...)
    继承:
    子类拥有父类的属性和方法
    Object.finalize();调用这个方法来释放资源
    多态((执行期间)动态绑定, 池绑定):
    重载(overload):
    方法名相同, 只有参数类型不同或者参数个数不同, 返回值不同是不能构成重载的
    重写(overwrite / override):
    将父类的方法重新定义
    --在子类中可以根据需要从父类中集成来的方法进行重写
    --重写方法必须和被重写的方法具有相同的方法名, 参数列表和返回类型
    --重写方法不能使用比被重写方法更严格的访问权限
    toString方法的重写
    equals方法的重写
    12,super, final关键字
    super: 指向父类的引用
    final的变量值不能改变
    final的方法不能被重写
    final的类不能被继承
    13, 对象转型
    --父类的引用可以指向其子类的对象
    --父类的引用不可以访问其子类对象新增的成员(包括属性和方法)
    --可以使用instanceof关键字来判断一下
    14, 抽象类
    --定义方法, 没有实现
    15, 接口

  • 相关阅读:
    Clean Code之JavaScript代码示例
    Okhttp3发送xml、json、文件的请求方法
    Ubuntu16.04 开机显示The system is running in low-graphics mode
    DELL R730服务器配置RAID及安装服务器系统 以及域的控制
    centos7搭建rsync
    centos7环境变量配错导致命令不能用
    centos7用lvm扩展xfs文件系统的根分区
    centos查看CPU的数量
    centos7无故重启-内核升级
    ubuntu scp命令或者用root连接ssh提示:Permission denied, please try again.错误
  • 原文地址:https://www.cnblogs.com/zhushijun/p/6894895.html
Copyright © 2011-2022 走看看