Java 第六天(纯干货)(带你14天了解并掌握Java SE)

今日内容

  • 面向对象概述
    • 类和对象的关系
  • 面向对象内存图
  • private、this关键字和封装
  • 面向对象之构造方法

  • 面向对象三大特征

    1. 封装
    2. 继承
    3. 多态

01. 面向过程和面向对象思想概述

  • 1. 什么是面向过程?
  • 2. 什么是面向对象?
  • 3. 面向对象思想的好处是什么?
总结:
    1. 面向过程强调的是过程,通过第一步,第二步...一步步的自己去实现功能。
    2. 面向对象强调的是对象,通过【指挥】对象中的功能,来帮我们完成需求
    3.
        1. 面向对象是一种思想,更符合我们思考问题得一种习惯
        2. 面向对象将我们从执行者的位置变成了指挥者
        3. 将复杂的问题简单化


结论:万物皆对象
            -> 现实生活中的任何一种事物都具备自己的功能
                    -> 使用代码的形式去描述这个事物,并使用该事物的具体功能

02. 面向对象思想特点和举例

  • 举例说明
总结:
    懒人思想, 指挥对象去做某件事情.

    买电脑:
        面向过程:1. 上网学习各个参数的解释
                 2. 了解各个品牌的性价比
                 3. 购买..

        面向对象:找一个懂电脑的人帮我去买

    洗衣服: 

    锅包肉:

03. 类和对象的概述

  • 1. 如何通过java描述现实生活中事物
  • 2. 类是由什么组成的?
  • 3. 类和对象的关系是什么?
总结:
    1. java描述现实生活中的任何一种事物, 都是通过类的形式进行描述
        --> JavaBean类 -> 封装数据的
        class Dog{}
        class Student{}



        --> 测试类
        class Demo{
            main(){
            }
        }
    2.
        属性 : 该事物具体的特征
                    例如:姓名,年龄,学号...


        行为 :  该事物具体可以做的事情
                    例如:学习,吃饭,睡觉


    3.

        类:一组相关属性和行为的集合,可以将类看作为一个模子,或者说是一张图纸
        对象:具体存在的事物

                结论:根据类,才能创建出对象  

04. 学生类的定义

  • 1. 属性和行为分别用什么表示?
  • 2. 又该如何编写?
总结:
    1.
        属性: 成员变量
        行为: 成员方法
    2.
        成员变量: 跟之前定义变量的格式的一样, 只不过位置发生了改变, 在类中方法外.
        成员方法: 跟之前定义方法的格式一样, 只不过去掉了static关键字
  • 3. 成员变量和局部变量的区别:
只要是跟局部有关的, 就都跟方法有关.

(这只是部分)
总结:
    1:
        位置不同:
            局部变量: 方法内, 或者是方法的声明上(形参).
            成员变量: 类中方法外.
    2:
        初始化值不同:
            局部变量: 没有默认初始化值, 在使用之前必须完成赋值才能使用.
            成员变量: 有默认初始化值.
  • 5分钟时间练习

05. 学生类的使用

  • 1. 创建对象的格式?
  • 2. 如果调用对象中的属性?
  • 3. 如何调用对象中的行为?
总结:
    1. 类名 对象名 = new 类名();
    2. 对象名.属性名;
    3. 对象名.方法名();
  • 5分钟时间练习

06. 手机的定义和使用

  • 分析:
属性: 品牌, 价格, 颜色

行为: 打电话, 发短信

    打电话的功能要求加入姓名

        例如: 给李小璐打电话.

5分钟时间自己编写.

07. 一个对象的内存图

  • 要求自己会画

08. 方法共用的内存图

  • 示例代码:
public class PhoneDemo2 {
    public static void main(String[] args) {
        Phone p = new Phone();
        p.brand = "小米5s";
        p.price = 1999;
        p.color = "银色";
        System.out.println(p.brand+"---"+p.price+"---"+p.color);
        p.call("林青霞");
        p.sendMessage();

        Phone p2 = new Phone();
        p2.brand = "IPhone7S";
        p2.price = 7999;
        p2.color = "土豪金";
        System.out.println(p2.brand+"---"+p2.price+"---"+p2.color);
        p2.call("张曼玉");
        p2.sendMessage();
    }
}
  • 总结: 在一次程序的执行过程中如果创建了多个对象

    • .class文件只加载一次
  • 扩展:

垃圾回收机制

    Java语言有完善的垃圾回收机制, 会在不定时的时候对内存中的垃圾进行清扫

    啥是内存中的垃圾?

        当一个对象的地址值没有任何一个引用记录住的时候, 那么此对象就会变成垃圾

        Phone p = new Phone();
        p.brand = "小米5s";
        p.price = 1999;
        p.color = "银色";
        System.out.println(p.brand+"---"+p.price+"---"+p.color);
        p.call("林青霞");
        p.sendMessage();

        注意: p = null;

09. 两个对象的内存图(两个引用指向同一个堆内存)

  • 看图说话

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

总结:
    A:位置不同
        成员变量:类中,方法外
        局部变量:在方法内部,或者是方法的声明上(形参)
    B:初始化值不同
        成员变量:有默认初始化值
        局部变量:没有默认初始化值,使用之前必须完成赋值才能使用。

    C:生命周期不同
        成员变量:随着对象的创建而存在,随着对象的消失而消失
        局部变量:随着方法的调用而存在,随着方法的弹桟而消失

    D:内存位置不同
        成员变量:存放在【堆内存】的对象中
        局部变量:存放在【桟内存】的方法中

    E:作用域不同(编写代码)
        局部变量:仅在他所在的大括号中有效
        成员变量:在整个类当中

11. private关键字的概述和特点

  • private权限修饰符可以修饰什么?
  • 被其修饰的(成员)有什么特点?
总结:
    1. 成员
         A. 成员变量
         B. 成员方法

    2. 只能在本类当中进行使用

12. private修饰后的标准类代码

  • 案例演示
  • 5分钟时间练习
问题: setXxx和getXxx方法一定要成对儿出现吗?

总结:
      不一定, 需要根据具体的业务去组织.

13. 封装的概述和好处

  • 1. 概述下什么是封装?
  • 2. 封装的好处又是什么?
总结:
    1. 封装:隐藏实现细节,仅对外暴露公共的访问方式

            体现:私有成员变量,提供setXxx和getXxx方法
    2. 
        A:提高了代码的安全性
        B:提高了代码的复用性 

            封装是一种思想,并非是一个技术点.
                将一段带有功能的逻辑代码抽取到方法中,这是对代码的一种封装
                让数据抽取到一个JavaBean类中,这是对数据的一种封装

14. this关键字的概述和使用

  • 1. 什么是this关键字
  • 2. this关键字的作用是什么?
总结:
    1. this代表当前对象的引用,谁来调用我,我就代表谁

            大白话:用来调用本类成员变量的

    2. 用来区分局部变量和成员变量的重名问题

            public void setAge(int age){
                this.age = age;
            }
  • 练习
(6分钟)
定义一个学生类
属性:姓名和年龄
生成对应的getter/setter方法
使用this关键字区分局部和成员变量
新建一个测试类测试学生类

15. 构造方法的概述和使用

  • 1. 什么是构造方法?
  • 2. 构造方法的格式为?
  • 3. 构造方法可以有return语句吗?
总结:
    1. 构建或者说创造一个对象时,调用的方法
            换句话来说,如果一个类,没有构造方法,就不能创建对象
    2.
        1. 方法名与类名相同,大小写也要一致
        2. 没有返回值类型,连void都没有
        3. 没有具体的返回值
    3.
        可以写return语句,用来结束方法

            但是return后面绝对不能跟具体的值

        正确:

            public Person(){
                return;
            }


        错误:
            public Person(){
                return 10;
            }

问题: 构造方法在什么时候被调用? 能不能手动调用?

        [每一次]创建对象的时候,由系统自动调用.

                构造方法不能手动调用
                    错误代码: p.Person();


问题: 构造方法的作用是什么?

        用来给对象中的数据(成员变量)进行,初始化!

16. 构造方法的注意事项

  • 1. 构造方法注意事项?
  • 2. 构造方法能够重载吗?
  • 3. 给成员变量的两种初始化方式有什么区别?
总结:
    1. 一个类,如果没有给出构造方法,系统将会提供一个空参数的构造方法      -> public Person(){}

        如果手动给出了构造方法,系统就不会再提供那个默认的空参构造了

            建议:今后编写代码的时候,空参有参都手动给出

    2.

        构造方法也是方法,允许进行重载

                一般我们会在空参构造的基础上,重载一个有参构造方法,方便对成员变量进行初始化。


    3.

        1. 通过有参构造初始化
        2. 通过setXxx方法

             一般都是配合使用的,往往会通过有参构造进行【初始化】,随后通过setXxx方法【修改】属性值

17. 标准的学生类代码编写和测试

  • 案例演示
  • 5分钟时间操作
    1. 私有成员变量
    2. 提供setXxx和getXxx方法
    3. 提供空参有参构造


    定义一个标准的汽车类
        包含以下属性:

            品牌   价格    颜色
            私有成员变量                  
            提供setXxx和getXxx方法
            提供空参有参构造
        包含以下行为:
            跑
        定义一个测试类测试刚定义的汽车类


    // 空参构造: Alt + shift + s + c
    // 有参构造:Alt + shift + s + o
    // setXxx\getXxx : Alt + shift + s + r

猜你喜欢

转载自blog.csdn.net/weixin_42261489/article/details/88191979