java13面向对象深入3大纲这里没有object-oriented-encapsulation的理解如何理解封装,计算机被包裹在一个外壳中,保护里面的电器元件,提供少量的按钮连接到它上面使用。如果我想看电视,我只需要按下开关并改变频道。电视的内部结构有必要了解吗?有必要摸显像管吗?为了方便我们使用电视,厂商将所有复杂的内部细节封装起来,只向我们暴露简单的接口,比如电源开关。我们不需要担心它在内部是如何实现的。要把用户知道的都暴露出来,而不是把用户知道的都隐藏起来。这就是封装,大白话:“该露的露,该藏的露”。理念我们的程序设计应该追求“高内聚,低耦合”。高内聚是指类内部的数据操作细节都自己完成,不允许外界干扰;低耦合:只有少数方法暴露给外部使用。使用抽象数据类型封装数据和基于数据的操作,形成一个不可分割的独立实体。数据在抽象数据类型内部进行保护,尽可能隐藏内部细节,只保留一些外部接口使其与外界联系。系统的其余部分仅通过围绕数据的授权操作与此抽象数据类型进行通信和交互。也就是说,用户不需要知道对象内部方法的实现细节,而是可以根据对象提供的外部接口(对象名和参数)来访问对象。功能a)、实现了专业分工。将能够实现特定功能的代码封装成一个独立的实体后,每个程序员都可以在需要的时候调用,从而实现专业分工,即在工作中进行子模块和功能的开发。b)隐藏信息和实施细节。通过控制访问权限,可以隐藏您不想被客户端程序员看到的信息。例如,客户的银行密码需要保密,只有客户才能开发权限。javabean规则写javabean有一些常用的规则,比如:1)、属性尽可能private2)、accessor:setter和getteraccessor>private,一般public多为setterXxx:storage>和getterXxx:viewcodepublicclassPerson{//名称私有字符串名称;//年龄私有int年龄;//性别privatebooleansex;publicPerson(){}//setter和getterpublicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicintgetAge(){返回年龄;}publicvoidsetAge(intage){this.age=age;}publicbooleanisSex(){返回性别;}publicvoidsetSex(booleansex){this.sex=sex;}}经典MVC思想概述MVC是一种分层思想,是一种设计模式。M:模型层(modellayer)处理数据和业务,然后将处理后的数据提供给视图层V:视图层(viewlayer)为用户展示数据,是数据最直观的体现。C:Controller层(业务逻辑层)从接口层接收数据,对接收到的数据进行封装和类型转换。调用模型层的服务来处理业务逻辑。调用适当的视图来呈现数据。优点减少代码量,提高性能(效率);提高代码扩展性(需求变化,不需要改太多代码)遵循高内聚低耦合的原则【外链图片传输失败,源站可能有防盗链机制,建议保存图片和直接上传(img-pZvJ4SlB-1609312950192)(/1581945749553.png)]权限修饰符public:一目了然;protected:子承父业(儿子自己用);默认值:家庭和谐;private:占现有的面向对象-多态女友带我回家,婆婆看到了,疯了!原来像《曾志伟》!多态性概述多态性主要用于实现动态链接,换句话说,程序的最终状态只在执行期间确定,而不是在编译期间确定。这可以提高大型系统的系统灵活性和可扩展性。java中如何实现多态?使用多态的好处?引用变量的两种类型:?编译时类型(有点模糊,一般是父类)?由声明时的类型决定。?运行时类型(在运行时,具体是哪个子类的子类)?由实际对应的对象类型决定。多态性存在的三个必要条件:继承、方法重写、父类引用指向子类对象代码。这里没有引用数据类型的类型转换。子类转换为父类:自动转换上转换对象不能操作子类新增的成员变量和方法。Upcast对象可以操作子类继承或重写的成员变量和方法如果子类重写了父类的某个方法,当upcast对象调用这个方法时,调用的就是被重写的方法。?将父类转换为子类:强制转换(绝不是手术,而是父类的真面目是子类,否则会出现类型转换错误抽象类概述使用关键字abstract声明的类称为“abstractclass”抽象类对抽象世界进行建模,作为父类使用。例如:请求一个图形的面积?你想的是什么图形?这个图形是不是太抽象了?是不是三角形还是原型?图呢?求面积?这时候可以把图定义为抽象类。几个关键点:抽象方法和类都必须用abstract修饰。抽象方法没有方法体,并且只需要声明,不需要实现。有抽象方法的类只能定义为抽象类。相反,抽象类中的方法不一定都是抽象方法,也可能没有抽象方法。s可以包含属性、方法和构造方法。抽象类不能被实例化,抽象类不能用new来实例化。只能被子类调用。抽象类只能用于继承。抽象方法必须由子类实现。抽象类的子类必须覆盖所有的抽象方法,才能被实例化,否则它仍然是一个抽象类。代码这里就不写接口概览了。Interface(接口),比“抽象类”更“抽象”的“抽象类”,可以更规范地约束子类。完全专业的实现:如何定义规范和具体实现的分离?格式:?[访问修饰符]interface接口名[extendsparentinterface1,parentinterface2...]{?constantdefinition//alwayspublicstaticfinal?方法定义//always:publicabstract?}如何实现子类通过implements来实现接口中的规范接口不能创建实例,但可以用来声明引用变量类型。实现接口的类必须实现接口中的所有方法,而这些方法只能是public。Java类只支持单继承,接口支持多继承。空接口只是JVM的一种标识,是JVM的通行证。1)、java.lang.Cloneable:不是所有的对象都可以被克隆否则CloneNotSupportedException2)、java.io.Serializable在实际开发中,业务逻辑处理类永远不要继承一个实现良好的类,或者继承一个抽象类,要么实现接口,优先使用接口,避免单继承的局限:抽象类代表“是”的关系,接口代表“喜欢”的关系
