新晋Java小白进化史之面向对象(封装和继承)_Object

  一转眼已经转行学习Java这么久了,就用这个来记录一下自己的成长史吧。

  就从面向对象开始说起吧:

一、什么是面向对象
    1.面向过程
        面向过程强调的是过程。也就是完成功能的每一个步骤都需要自己来实现!
    2.面向对象
        面向对象强调的是对象。由对象帮我们去完成功能!

    3.面向对象的好处
        A:将复杂的事情简单化
        B:更符合人们思想习惯的思想(懒人思想)
        C:将程序员由执行者变成了指挥者
    4.面向对象三大特征
        A:封装性
        B:继承性
        C:多态性(现在还是很迷的一大特征emmmm)

二、类和对象
    1.什么是类
        指的是某一类事物的集合。比较广泛的抽闲概念。例如:
        手机类、人类、动物类、水果类~~~
    2.什么是对象
        指的是某一类事物中的具体体现。例如:
        手机类:苹果手机、华为手机、小米手机~~
        人类:张三、李四、王五~~~
    3.类和对象的关系
        可以将类看成是一个图纸,根据图纸创建出来很多个对象!(就是传闻中的new一个对象)
        可以使用类来创建出不同的对象!
    4.类中包含两个组成部分
        属性(成员变量):指的是事物的一些描述信息。例如:学生类:姓名、年龄、性别、身高、体重~~~
        行为(成员方法):指的是事物可以做什么事情。例如:学生类:吃饭、睡觉、学习、玩游戏~~~ 

三、定义一个类和使用类
    1.如何定义类?
        分析一个类中具备哪些属性和行为!
    2.如何使用类?四、成员变量和局部变量的区别
    1.定义位置:
        成员变量:在类中方法外
        局部变量:在方法内部或方法声明上
    2.在内存中的位置:
        成员变量:在堆内存
        局部变量:在栈内存
    3.默认初始化值:
        成员变量:有默认初始化值
        局部变量:没有初始化值,使用之前必须赋值
    4.生命周期:
        成员变量:随着对象的创建而创建,随着对象的消失而消失
        局部变量:随着方法的调用而创建,随着方法的消失而消失
五、封装
    1.什么是封装?
        将不想对外暴露的实现细节隐藏!
    2.封装的体现
        A:生活中体现:插排。将零线和火线给隐藏起来。
        B:程序中体现:类、方法
    3.private 关键字
        将成员进行私有 (老师说以后做项目都要写private关键字)
    4.如果将一个成员私有,还想被外界访问得到,可以提供一套get和set方法
    5.this 关键字
        可以区分成员变量和布局变量重名的问题
        代表当前对象的引用,谁调用的方法this就代表谁

        A:创建对象:类名 对象名 = new 类名();
        B:使用成员:
            使用成员变量:对象名.成员变量名;
            使用成员方法:对象名.成员方法名();

六、构造方法
    1.什么是构造方法?
        构造方法是用来创建对象使用的。
    2.定义格式
        修饰符 方法名(){}
    3.注意事项
        构造方法的方法名要和类名保持完全一致
        构造方法没有返回值类型,连void也不能写
        如果一个类中没有写任何构造方法,则系统会提供一个默认的空参构造方法,以供我们使用
        如果我们写了任意一个构造方法,则系统不再提供默认的构造方法了   

七、什么是继承?

  继承完成的就是共性抽取。让类与类之间产生了关系:子父类的关系!

  格式: public class 子类名称 extends 父类名称{}

八、java中继承的特点

  • java只支持单继承。不能多继承,但是可以多层继承

  • 继承的好处

    • 提高代码的复用性

    • 提高代码的维护性

  • 继承的弊端

    • 耦合性(类与类之间的关系太过紧密)太强

九、继承关系中成员变量访问特点

  • 直接访问

    • 如果子类中有,优先用子类的。

    • 如果子类中没有,向上查找父类中有没有。如果父类中有则使用父类的。如果父类中也没有则报错

  • 成员方法间接访问

    • 如果是调用子类的成员方法,优先使用子类的

    • 如果是调用父类的成员方法,优先使用父类的

  • 子父类变量重名如何区分访问

    • 直接使用,默认使用的是子类的局部变量。

    • 如果想使用子类成员变量,this.成员变量名。

    • 如果想使用父类成员变量,super.成员变量名

posted on 2019-03-27 12:56  Object_Q  阅读(73)  评论(0)    收藏  举报

导航