面向对象封装与继承

横扫天下IT 横扫天下IT     2022-10-02     217

关键词:

面向对象:
    (1)面向过程 强调过程,执行者:它是一种更符合人们思考习惯的思想;
    (2)面向对象 强调对象,指挥者:它使复杂的内容简单化;
    (3)面向对象思想的特点:它使我们从执行者变成了指挥;
        面向对象方法的主要优点是:符合人们通常的思维方式;从分析到设计再到编码采用一致的模型表示,具有高度连续性;软件重用性好。
 
技术分享图片
 
面向对象的写法:
技术分享图片
初始化对象
技术分享图片
面向对象的特点:
    封装;继承;多态
 
封装,有参构造方法。
技术分享图片
 
技术分享图片
无参构造方法
技术分享图片
 
技术分享图片
 
类和对象:
    对于同一类事物可以抽取它们的共性的内容,定义在类中。如生活中的汽车,每一台车都有轮胎数和颜色。那么在通过java描述汽车这类事物时,就可以将这两个共性属性作为类中的属性进行定义。通过该类建立的每一个汽车实体都具有该属性,并可以有对象特有的属性值。
    (1)类对现实世界中事物的描述(成员变量和方法);
    (2)对象 现实世界中实际存在具体的个体;
    (3)对象的使用以及内存图。
 
成员变量与局部变量的区别:
    1.作用域:
        成员变量的作用域是整个类中都可以访问;
        局部变量是的作用域是定义它的方法内,方法弹栈,它就消失;
    2.初始值:
        局部变量使用前必须手动赋值;系统不会赋默认值;
        成员变量系统会赋初始值,Sting-->null,int--0,double--0.0,boolean-->false,char-->‘u0000‘;
    3.所在内存区域:
        局部变量在方法运行的栈帧里,在栈里,会自动释放;
        成员变量在对象里,对象在堆里,成员变量也在堆里,不使用的对象会被垃圾回收机制在不确定的时候回收。
 
局部变量和成员变量:
    (1)作用范围 
        局部变量:方法内public void method(String name) {};
        成员变量:类中,对整个类有效{成员变量分为两种一种静态的,一种非静态的};
    (2)存储空间
        局部变量:栈内存
        成员变量:堆内存{静态的成员变量在方法区,非静态的在对象中在堆内存中}
    (3)初始化值
        局部变量:在使用前必须手动给值
        成员变量:jvm默认初始化值。
技术分享图片
 
成员变量
技术分享图片
 
封装:
    (1)封装的好处:便于重复使用,安全性高。
    (2)private(私有的)权限修饰符
封装的访问修饰符:
1、private(私有的)--》访问我,除了当前类中可以访问的到,其他类必须通过方法。
2、protected(受保护的)
3、public(公共的)
4、默认的,也就是没有访问修饰符。
位置
private
默认的
protected
public
同一个类
同一个包内的类
不同包内的子类
不同包并且不是子类
 
private(私有):
    private修饰成员变量和成员方法后,它们都不能在其他类直接访问,成员变量要通过公开的setget方法访问,成员方法私有表示这个方法是给本类自己方法用的。
    注意:私有仅仅是封装的一种体现形式而已。封装不仅仅只有private一种方式,比如protected也可以实现封装。
 
技术分享图片
 
技术分享图片
构造函数:
    (1)用途:用于给对象中属性进行初始化。
        A:格式类名(){code}Person(){}
        B:Person(){}public Person(){}
    (2)特点 你不定义空参数的构造函数,系统会自动给一个空参构造,你定义了构造函数无论是有参还空参的,系统就不再给空参数的了。
    (3)重载构造函数,是根据参数列表来区分是哪个构造函数。
        注意:构造函数细节:如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。如果我们手动定义了一个构造函数,系统就不会再给默认构造函数。所以建议大家;在给类添加带参数的构造函数的同时,将无参的也加上。
 
具体什么时候使用构造函数:
1、当我自定义对象,需要使用不定变量,或者用户输入的数据,我这个时候需要从当前类中传递给我自定义对象的时候,需要使用到有参构造函数进行传递。
2、当我什么时候用空参构造函数:当我需要使用自定义对象去帮我操作一些工作,刷新当前页面所有数据。
或者我现在要初始化一些插件或者动画,或者其他的操作。
技术分享图片
 
this关键字:
    每个对象都有一个指向自己的指针,就this。
 
this的作用:
    1.在方法中区分成员变量和局部变量.this.成员变量;
    2.this语句可以在构造函数里调用其他构造函数;
    3.在一个方法中,this可以调用本类的其他方法,当然也可以省略:
        (1)代表当前对象的引用。使用的时候,谁调用方法,this就代表谁。
        (2)什么时候使用this呢?
            A:当局部变量和成员变量重名的时候,可以用this进行区分。
            B:this调用成员方法
            C:构造函数中使用this
                注意:this() 必须放在第一行。
技术分享图片
 
创建对象在内存中的详细步骤:
    1.主函数进栈,给类类型变量c分配空间
    2.在堆内存中开辟空间,分配内存地址
    3.在堆内存中建立对象特有属性,并进行默认初始化
    4.对属性进行显示初始化
    5.将内存地址赋给栈内存中的c变量
 
总结:
    初始化块就是构造器的补充,其实就是提炼各个构造函数中通用的初始化行为,将它们放到初始化块中,这样,可以只写一次,不用每个构函都写一遍,它会自动保证在构函之前执行。初始化块和构函相关联构函执行一次,初始化块也执行一次。
 
 
对象内中的方法:
1、构造方法:随着类加载而执行,只执行一次,就是类初始化时随着执行。
2、自定义方法:自定义方法,如果创建后,没有对象调用则不执行,必须通过对象调用才能进行执行操作。
3、当前类中方法,你可以直接使用方法名进行执行,因为在当前对象中,没有其他对象能够引用,只需要写上方法名在主入口方法中即可。
4、静态代码,通过关键字static加上大括号进行创建。优先级最高,不受代码执行的步骤所影响。
总结:静态方法(优先级最高) > 构造方法 > 自定义方法;
 
继承:(extends )
多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。多个类可以称为子类,单独这个类称为父类或者超类基类。子类可以直接访问父类中的非私有的属性和行为。通过 extends 关键字让类与类之间产生继承关系。格式:class 猫 extends 动物{}
注意:
1、一个父类可以有多个子类。
2、一个子类不能有多个父类。
3、object(任何类都起源于他):他是所有类的默认父亲,如果当前类没有继承,那么系统自动默认继承object
4、后期再学习使用过程,看见范围值结果为object或者obj类型,那么就是返回为对象的意思。
 
父类
技术分享图片
子类
技术分享图片
运行测试类:
技术分享图片
 
今天作业:
1、大象与冰箱的故事。
2、完善今天动物类的创建与方法的使用:
1、通过Scanner,进行选择与动物玩耍、吃饭、睡觉、看病。
2、每次创建对象,需要显示对象的:疲劳度、饥饿度、健康值;
3、通过选择给动物吃饭,睡觉到一定值后,动物无法进行吃饭与睡觉,必须先消耗,再操作,并提醒用户。
4、必须循环操作。

二面向对象三大特性

一继承与派生  一、继承定义  二、继承与抽象的关系  三、继承与重用性  四、派生  五、组合与重用性  六、接口与归一化设计  七、抽象类  八、继承实现的原理  九、子类中调用父类的方法二多态与... 查看详情

面向对象(封装与继承)(代码片段)

封装:封装的概念:将代码的细节隐藏起来,然后对外界提供可以使用的公共方法。在现实生活中,一台电饭煲,一台榨汁机都是封装的体先,榨汁机只需要我们加入材料按下按钮,就能为我们榨一杯果汁,我们不知道榨汁机内... 查看详情

面向对象的程序设计

一面向对象的程序设计的由来二什么是面向对象的程序设计及为什么要有它三类和对象3.1类相关知识3.2对象相关知识3.3对象之间的交互3.4类名称空间与对象/实例名称空间3.5小结四继承与派生4.1什么是继承4.2继承与抽象(先抽象... 查看详情

面向对象-封装继承

面向对象-封装.cs类-就像一个文本文档,里面就是放置C#代码构造函数-创建一个类的函数每一个类都有构造函数,访问修饰符必须是public的,并且不需要写任何返回值,方法名与类名一致自己写的类-用户自定义类型如果要使用咱... 查看详情

面向对象与继承

print(‘面向对象‘)‘‘‘今日内容:1,继承2,多态3,封装4,绑定方法和非绑定方法classmethodstaticmethod5,面向对象高级反射一些内置方法__str____del__6,元类(看视频)这个是属于面向对象底层的知识点,可能会打破你之前对于面向对象的知识... 查看详情

面向对象中的继承封装构造与析构函数

构造函数:是一种特殊的方法。主要用来在创建对象时初始化对象,即为对象成员变量赋值初始值,总与new运算符一起使用在创建对象的          语句中。两根下划线开头,construct  &nb... 查看详情

深入浅出js的封装与继承

 JS虽然是一个面向对象的语言,但是不是典型的面向对象语言。Java/C++的面向对象是object-class的关系,而JS是object-object的关系,中间通过原型prototype连接,父类和子类形成一条原型链。本文通过分析JS的对象的封装,再探讨正... 查看详情

深入浅出js的封装与继承

  JS虽然是一个面向对象的语言,但是不是典型的面向对象语言。Java/C++的面向对象是object-class的关系,而JS是object-object的关系,中间通过原型prototype连接,父类和子类形成一条原型链。本文通过分析JS的对象的封装,再探... 查看详情

面向对象——继承与组合(代码片段)

1、组合的特点2、继承带来最大的坏处3、设计父类遵循的规则 4、何时使用继承4、何时使用组合 1、组合的特点  提高代码复用性,增加has-a关系,增强理解2、继承带来最大的坏处  破坏父类的封装性(每个... 查看详情

面向对象封装继承

构造函数:构造函数-创建一个类的函数每一个类都有构造函数,访问修饰符必须是public的,并且不需要写任何返回值,方法名与类名一致自己写的类-用户自定义类型如果要使用自定义类型产生出来的 对象 必须有一个实... 查看详情

面向过程与面向对象

1.面向过程(pop)与面向对象(oop)   ¢二者都是一种思想,面向对象是相对于面向过程而言的.面向过程,强调的是功能行为,以函数为最小单位,考虑怎么做。面向对象,将功能封装进对象,强调具备了功能的对象,以类/对象为最... 查看详情

java面向对象三大特性封装继承多态

...只保留特定的方法与外界联系为什么需要封装:封装符合面向对象设计原则的第一条:单一性原则,一个类把自己该做的事情封装起来,而不是暴露给其他类去处理,当内部的逻辑发生变化时,外部调用不用因此而修改,他们只... 查看详情

0面向对象三大机制封装继承多态

3行李货物再按一1再按3各种面向对象编程语言相互有别,但都能看到他们对面向对象三大机制的支持,即:”封装、继承、多态“  -封装,隐藏内部实现  -继承,复用现有代码  -多态,改写对象行为  继承是以... 查看详情

一篇文章让你精通面向对象特征(封装,继承与多态)(代码片段)

在Java面向对象中有非常重要的三个属性,封装,继承与多态,让我们了了解了解它们的重要性吧!访问修饰符访问修饰符public公共的,在任何地方都可以正常访问,权限最大protected受保护的,同包和子... 查看详情

java基础——面向对象三大特征(继承封装多态)(代码片段)

面向对象三大特征(继承、封装、多态)1继承2封装3多态4方法重载1继承classParent 属性; 构造方法; 其它方法;classChildextendsParent 全部继承过来; 可以重写父类的属性与方法; 可以拥有自己独特的属性和方法;继承语法——exten... 查看详情

面向对象之继承封装与多态(代码片段)

继承继承是面向对象中的一个重要概念,通过如果要创建的类与以有的类大部分属性、方法类似,那么可以通过继承的方式创建。一个类可以继承一个或多个类,继承一个类称为单继承,继承多个类称为多继承。被继承的类称为... 查看详情

面向对象三大特征是啥?

...的不就是使用程序处理事情时以对象为中心去分析吗,与面向过程不同,面向过程关心处理的逻辑、流程等问题,而不关心事件主体。而面向对象即面向主体,所以我们在解决问题时应该先进行对象的封装(对象是封装类的实例... 查看详情

python入门-6面向对象编程:07面向对象三大特征(封装继承多态)-继承(代码片段)

一:面向对象三大特征介绍  Python是面向对象的语言,也支持面向对象编程的三大特性:继承、封装(隐藏)、多态。  封装(隐藏)    隐藏对象的属性和实现细节,只对外提供必要的方法。相当于将“细节封装... 查看详情