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, 接口

  • 相关阅读:
    HDU4507 吉哥系列故事――恨7不成妻(数位dp)
    UCF Local Programming Contest 2017 G题(dp)
    ICPC Latin American Regional Contests 2019 I题
    UCF Local Programming Contest 2017 H题(区间dp)
    HDU2089 不要62
    AcWing1084 数字游戏II(数位dp)
    UCF Local Programming Contest 2017 F题(最短路)
    Google Code Jam 2019 Round 1A Pylons(爆搜+贪心)
    AcWing1083 Windy数(数位dp)
    Vue
  • 原文地址:https://www.cnblogs.com/zhushijun/p/6894895.html
Copyright © 2011-2022 走看看