面向对象封装与继承

it2022-07-04  131

面向对象:     (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、必须循环操作。

转载于:https://www.cnblogs.com/hqf520/p/7930593.html


最新回复(0)