黑马Java零基础视频教程精华部分_5


前言

面向对象


一、设计对象并使用

1、类和对象

在这里插入图片描述
定义好上图左边的对象(后面会填充手机相应属性)之后,通过new关键字来生成对象。
在这里插入图片描述
注意上图中间的框 我们只是定义一个类,不是定义一部真正的手机,所以属性目前没有赋值。
在这里插入图片描述

2、类的几个补充注意事项

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
总结如下:
在这里插入图片描述

二、封装

1.封装的原则

在这里插入图片描述
封装首先就是要考虑,我要把功能放在哪个类中,人画圆(draw()函数),那是把这个函数放在Person类还是Circle类中?答案是圆的方法,而不是人的方法。引出封装的原则。
封装的原则:对象代表什么,就得封装对应的数据,并提供数据对应的行为。
我们要理解成,每个类封装的都是这个类自己要干的事情,人画圆,这件事是谁干的呢,其实是圆这个类自己画的圆,然后人调用圆的方法即可,再者说画圆一般需要知道半径,而半径这个属性是封装在圆中的,所以画圆这个方法也要定义在圆类中比较合适。比如,人关门,也认为成门自己关的。

3.如何正确使用属性

在这里插入图片描述
别人在使用时会赋值一些不合理的值。为了让别人无法赋值我们自己的属性(通过private关键字),并且我们在赋值我们的属性时要拒绝不合理的数值(通过编写和调用set方法来实现,而get函数是对外提供成员变量的函数)。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意这里出现了问题,“小米”这个值并没有赋值给phone这个对象的brand属性。
在这里插入图片描述
为了解决这个问题,我们首先要定义两个名词:成员变量,局部变量,如下图所示。
在这里插入图片描述
但是当成员变量和局部变量重名时,输出age语句,输出的age是哪个呢?答案:就近原则,如下图所示
在这里插入图片描述
就近原则,使得我们使用的是局部变量,如果我想使用成员变量,要通过下面的 第三节this关键字。

三、this关键字

在这里插入图片描述
在这里插入图片描述

this的内存原理

在这里插入图片描述
在这里插入图片描述

四、构造方法

在这里插入图片描述
之前的代码,如上面第三行是空参的构造方法,我们没有定义构造函数的情况下,会自动帮我们写一个空参的构造方法。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、标准JavaBean

在这里插入图片描述
练习:根据下面图片设计JavaBean类
在这里插入图片描述

package com.itheima.demo1;

public class User {
    private String username;
    private String password;
    private String email;
    private String gender;
    private int age;

    public User(){}
    public User(String username, String password, String email, String gender, int age){
        this.username = username;
        this.password = password;
        this.email = email;
        this.gender = gender;
        this.age = age;
    }
}

两种快捷方式如下:
快捷键是Alt+Insert
还有就是安装ptg插件,并在类中右键使用
在这里插入图片描述
在这里插入图片描述

六、对象内存图

在这里插入图片描述
JDK8之前方法区和堆是放在一起的(与上图表示有出入),其实他们在物理上也是连在一起的。
在这里插入图片描述
在这里插入图片描述

1.一个对象的内存图

在这里插入图片描述
其中第4点和第5点是对第3点进行赋值。
在这里插入图片描述

2.两个对象的内存图

在这里插入图片描述
在这里插入图片描述

3.两个变量指向同一个对象内存图在这里插入图片描述

七、补充知识:成员变量、局部变量区别

在这里插入图片描述
在这里插入图片描述

  • 26
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值