2021/8/17 JavaOop 第一章 封装

面向对象特征之一:封装与隐藏

一丶★ 为什么需要封装?封装的作用和含义?、

▲我要用洗衣机,只需要按一下开关和洗涤模式就可以了,有必要了解洗衣机内部的结构吗?有必要碰电动机吗?

▲我要开车,只需要启动钥匙即可,有必要了解车的内部结构吗?有必要了解车发动机的工作原理吗?

★ 我们程序设计追求“高内聚,低耦合”。

▲高内聚:类的内部数据操作细节自己完成,不允许外部干涉

▲低耦合:仅对为暴露少量的方法用于使用

★ 隐藏对象内部的复杂性,只对外公开简单的接口,便于外界调用,从而提高系统的可扩展性丶可维护。通俗的说,把该隐藏的隐藏起来,该暴露的暴露出来。

                                                            这就是封装性的设计思想。

二丶★ 问题的引入:

        当我们创建一个类的对象以后,我们可以通过“对象.属性”的方式,对对象的属性进行赋值。这里,赋值操作要受到属性的数据类型和存储范围的制约。除此之外,没有其他制约条件。但是,实际问题中,我们往往需要给属性赋值,加入额外的限制条件。这个条件就不能在属性声明时体现,我们只能通过方法进行限制条件的添加。(比如:setname()),同时,我们需要避免用户再使用“对象.属性”的方式对属性进行赋值。则需要将属性声明为私有的(private)。

------>此时,针对与属性就体现了封装性。

三丶★封装性的体现:

       ①: 我们将类的属性xxx私有化(private),同时,提供公共的(public)方法来获取(getxxx)和设置(setxxx)此属性的值。

扩展:封装性的体现:如上①

                ②:不对外暴露的私有的方法

                ③:单例模式丶丶丶

四丶★封装性的体现,需要权限修饰符来配合。

  1.java规定的4种权限(从小到大排列):

                                                private<缺省<protected<public

java权限修饰符public丶protected丶private置于类的成员定义前,用于限定对象对该类成员的访问权限。

                                                        四种访问权限修饰符

修饰符                        类内部                同一个包                不同包的子类                同一个工程

private                        yes

(缺省)                     yes                        yes

protected                   yes                        yes                          yes

public                         yes                        yes                          yes                                yes

对于class(类)的权限修饰只可以用public和default(缺省)

▲public类可以在任意地方被访问。

▲default类只可以被同一个包的内部类访问。

2.4种权限可以用来修饰类及类的内部结构:

                                        属性丶方法丶构造器丶内部类

修饰类的话,只能使用:缺省丶public。

总结封装性:java提供了4种权限修饰符来修饰类及类的内部结构,体现类及类的内部结构在被调用时的可见性的大小。

五丶★static关键字

        public static String name;

        对象间数据是不共享的除非该数据用了static修饰了

        static:共享没有必要私有

        所以static可以直接通过类名调用                Student.name

        如果在调用完被赋值则整个值都将被更改,牵一发而动全身。

六丶★构造器(或构造方法)

        类的结构之三:构造器(或构造方法:constructor)的使用

        construct:建设丶建造        constrction:ccb        constructor:建设者

1.构造器的作用:

①:创建对象

②:初始化对象的属性

2.说明:

①:如果没有显式的定义类的构造器的话,则系统默认提供一个空参的构造器

②:定义构造器的格式:权限修饰符  类名  (形参列表){}

③:一个类中定义多个构造器,彼此构成重载

④:一旦我们显示的定义了类的构造器之后,系统就不再提供默认的空参构造器

⑤:一个类中,至少会有一个构造器

3.构造器的特点:
        ①:必须和类的名称相同
        ②:必须没有返回值,也不能写void
        ③:使用new关键字,本质是在调用构造器
        ④:用来初始化值
        ⑤:如果在类中没加入任意构造器,编译后会自动加入空构造(无参构造器);若已加入构造器,编译后则不会自动加入
        ⑥:构造器可以存在return,return有选择的跳出构造器
        ⑦:alt+insert 自动生成构造器
注意点:
定义有参构造之后,如果想使用无参构造,显示的定义一个无参的构造


4.属性赋值的先后顺序:

       ①:默认初始化

       ②:显示初始化

       ③:构造器中赋值

       ④:通过“对象.方法”或“对象.属性”的方式赋值

以上操作的先后顺序:①>②>③>④

七丶★类图

 八丶Java Bean

        1丶Java Bean是一种Java语言写成的可重用组件

        2丶所谓JavaBean,是指符合如下标准的Java类:

                ①:类是公共的

                ②:有一个无参的公共的构造器

                ③:有属性,且有对应的get丶set方法

        3丶用户可以使用JavaBean将功能丶处理丶值丶数据库访问和其他任何可以用Java代码创造的对象进行打包,并且其他的开发者可以通过内部的Jsp页面丶servlet丶其他JavaBean丶applet程序或者应用来使用这些对象。用户可以认为JavaBean提供了一种随时随地的复制和粘贴的功能,而不用关心任何改变。

练习小作业:

        1丶创建一个学生类丶教师类给他们丰富好属性以及方法丶构造方法

        2丶根据题目1的构造方法构造出三个学生三个老师

        3丶实现这三个老师跟三个学生彼此一对一教学

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Abcdzzr

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值