网站运行速度慢的原因,如何得知网站有没有做推广,甘肃建投土木工程建设有限公司网站后台,北京电子商务网站建设JAVA面向对象的概念 Java基于面向对象的概念#xff0c;它允许更高级别的抽象以实际方式解决任何问题。 面向对象的方法将实际对象中的问题解决方案概念化#xff0c;从而更易于在整个应用程序中重用。 例如椅子#xff0c;风扇#xff0c;狗#xff0c;电脑等。 在Java… JAVA面向对象的概念 Java基于面向对象的概念它允许更高级别的抽象以实际方式解决任何问题。 面向对象的方法将实际对象中的问题解决方案概念化从而更易于在整个应用程序中重用。 例如椅子风扇狗电脑等。 在Java中类是定义同类对象的常见行为的蓝图模板或原型。 实例是特定类的实现并且类的所有实例都具有类似的属性如类定义中所述。 例如您可以定义一个名为House with room number的类作为属性并创建实例例如2个房间的房子3个房间的房子等。 优点 以下是面向对象软件开发的一些优点 维护成本较低主要是因为它是模块化的。 由于具有继承性等功能因此可以更快地进行开发从而提高了代码可重用性。 改进的代码可靠性和灵活性 由于真实世界的建模而易于理解。 在对象级别更好的抽象。 从一个开发阶段过渡到另一阶段的过程中降低了复杂性。 OOPS有四个主要功能 封装形式 遗产 多态性 抽象化 封装形式 封装为其他对象提供了契约以隐藏和公开可以访问其他对象的对象。 在Java中我们使用私有访问修饰符来隐藏方法和变量以限制外部世界。 Java还提供了不同的访问修饰符例如publicdefaultprotected和private它们用于隐藏不同级别的可见性但最终目标是封装不需要更改的事物。 按照最佳实践一个班级应该只有一个理由进行更改而封装将现实带入实现“ 一个原因 ”的设计原则。 按照最佳实践封装意味着隐藏那些经常更改的内容以避免破坏其他类。 好处以下是封装的一些优点 我们可以通过隐藏对象的属性来保护对象的内部状态。 它通过防止对象以意外方式彼此交互来提高代码模块化。 增加可用性 维护特定对象的合同 封装促进维护 可以独立进行代码更改 多态性 多态性是在编程中针对不同底层形式数据类型呈现相同接口的能力。 这意味着类在共享公共接口时具有不同的功能并且可以通过传递特定的类引用来动态调用。 经典示例是Shape类以及可以从中继承的所有类正方形圆形十二面体不规则多边形splat等。 在此示例中每个类都有其自己的Draw函数并且客户端代码可以简单地执行以下操作 Shape shapenew Square ();Shape.area() to get the correct behavior for any shape. 多态的好处在于使用不同类的代码不需要知道正在使用哪个类因为它们都以相同的方式使用。 面向对象的编程语言用来实现运行时多态的过程称为动态绑定。 注意 多态性是在运行时根据用于调用它的对象选择更多专门方法的能力。 不涉及抽象类的情况下可能会发生多态。 优点 创建可重用的代码这意味着一旦创建实现和测试了类就可以轻松使用它而无需关心类中编写的内容。 它提供了更通用且松散耦合的代码。 编译时间要短得多并且可以加快开发速度。 动态绑定 相同的接口可用于创建具有不同实现的方法 可以通过使用相同的方法签名替换完整的实现 实现多态的方法重载重载处理两种方法 一个在父类中另一个在子类中并且具有相同的名称和签名。 通过覆盖您可以针对不同的对象类型以不同的方式定义相同的操作 例如 while(it.hasNext()) {Shape s (Shape) it.next();totalArea s.area(dim); //polymorphic method call. Will call right object method} 方法重载或临时多态性或静态多态性 重载处理同一个类中具有相同名称但具有不同方法签名的多个方法。 通过重载您可以以不同的方式为不同的数据定义相同的操作。 有时它说是静态多态性但实际上不是多态性。 方法重载无非就是拥有两个名称相同但参数列表不同的方法。 它与继承和多态性无关。 重载方法与覆盖方法不同。 [ Head First Java ] Java中通过泛型进行的参数多态性 在类声明中字段名称可以与不同类型关联而方法名称可以与不同参数和返回类型关联。 Java通过泛型支持参数多态性。 列表就是一个例子它可以接受泛型所包含的数据类型。 ListString list new ArrayListString(); 为什么我们不能在Java中覆盖静态方法 覆盖取决于拥有类的实例。 多态性的关键是可以对一个类进行子类化并且实现那些子类的对象对于在超类中定义的相同方法在子类中被重写将具有不同的行为。 静态方法未与类的任何实例相关联因此该概念不适用。 影响Java设计的因素有两个。 一个是对性能的关注Smalltalk对其速度太慢提出了很多批评垃圾回收和多态调用是其中的一部分Java的创建者决心避免这种情况。 另一个决定是Java的目标受众是C 开发人员。 使静态方法按其实际方式工作对C 程序员来说是很有益的并且非常快因为无需上层类来确定要调用的方法您可以直接转到类并调用指定的方法。 [堆栈溢出] 遗产 它是在派生类中包含基类的行为即方法和状态即变量以便它们可以在该派生类中访问。 继承的主要优点是它提供了代码重用的正式机制并且避免了重复 继承的类通过重用父行为并添加新功能来扩展应用程序的功能。 这将使设计紧密耦合因为如果要更改超类则必须知道子类的所有详细信息以避免破坏 它是软件可重用性的一种形式其中从现有类超类创建新的类子类从而增强功能同时使用超类的某些属性。 因此如果您有一个Parents类那么您就有一个扩展Parent的Child类Child继承了Person拥有的所有东西。 优点 提高可重用性 在逻辑上建立“是”关系例如狗是动物 模块化代码 避免重复 退税 紧密耦合 子类取决于父类的实现这就是紧密耦合的原因。 抽象 抽象是指根据其接口和功能而不是其实现细节来开发类。 抽象类公开接口不包括实际实现。 它将对象实现与其行为或实现分开。 通过隐藏无关的细节抽象降低了复杂性。 优点 通过使用抽象我们可以将可以分组的事物分离为另一种类型。 可以将经常更改的属性和方法分组为一个单独的类型以便不必对主要类型进行更改。 这为OOAD原则增加了力量-“代码应为扩展而开放而为修改而封闭”。 简化域模型的表示。 抽象与封装之间的区别 封装是用作抽象的一部分的策略。 封装是指对象的状态即对象封装其状态并将其从外部隐藏起来。 类的外部用户通过其方法与之交互但无法直接访问类的状态。 因此该类抽象出了与状态相关的实现细节。 抽象是一个更通用的术语。 也可以通过以及其他子分类来实现。 例如标准库中的List类是对一系列项目的抽象这些项目按其位置索引。List的具体示例是ArrayList或LinkedList。 与列表进行交互的代码抽象出它正在使用哪种列表的详细信息[堆栈溢出] 如果不通过封装隐藏基础状态则通常不可能进行抽象化–如果一个类公开其内部状态则它无法更改其内部工作方式因此无法抽象化 什么是抽象类和抽象方法 在设计中您希望基类仅为其派生类提供一个接口。 这意味着您不希望任何人实际实例化基类的对象。 您只需要对其进行上载隐式上载这将为您提供多态行为以便可以使用其接口。 这可以通过使用abstract关键字使该类抽象化来实现。 对不实例化抽象类提供了一些限制无论谁使用都应实现抽象方法。 并提供多态性 抽象类可以包含抽象方法和具体方法。 在类中如果一个方法被声明为抽象则该类必须被声明为抽象。 但是与此相反不一定是正确的。 如果class被声明为抽象类则它可能没有抽象方法。 如果某个方法不提供实际的实现而仅提供方法签名则称为抽象方法。 扩展抽象类的子类留有实际的实现。 抽象方法无法实例化 另一个类只能扩展它。 什么时候使用抽象类 抽象类使您可以定义一些默认行为并强制子类提供任何特定行为。 例如List是接口而AbstractList提供List的默认行为可以按原样使用或在子类例如ArrayList中完善它。 什么是接口 interface关键字通过完全避免任何方法或函数的实现使抽象类的这一概念更进一步。 您只能声明方法或函数而不能提供实现。 实现接口的类应提供实际的实现。 接口是OO设计中非常有用且常用的方面因为它提供了接口和实现的分离并使您能够 界面优势 多重继承 松散耦合定义的抽象操作作为单独的下划线实现可以是JDBCJPAJTA等。 接口程序未实现 具有动态绑定的多态性 –在不透露对象实际实现的情况下显示对象的编程接口。 抽象层分离问题 接口和抽象类之间的区别 接口是一种合同要求类无论要实现接口的人以其在接口中定义的方式实现接口。 它是带有方法声明的空外壳。 抽象类定义一些常见的行为并要求子类为该类定义不常见或特定的行为 可以以任何可见性定义抽象类的方法和成员而接口的所有方法都必须定义为public 继承抽象类时子类必须定义抽象方法而一个接口可以扩展另一个接口而不必定义方法 子类只能扩展一个抽象或任何其他类而一个接口可以扩展或一个类可以实现多个其他接口。 子类可以定义具有相同或更少限制性可见性的抽象方法而实现接口的类必须定义具有完全相同的可见性的方法 接口不包含构造函数而抽象类包含。 在Java接口中声明的变量默认为final。 抽象类可能包含非最终变量 默认情况下Java接口的成员是公共的。 Java抽象类可以具有类成员的常用风格例如privateprotected等。 组成 通过实现继承或组合可以实现代码的可重用性但是用于代码重用的组合方法比继承提供了更强的封装性因为对后端类的更改不必破坏仅依赖于前端类的任何代码。 组合是在类中实现具有关系的设计技术。 我们可以使用Java继承或对象组合进行代码重用 合成是关于表达对象之间的关系。 想想椅子的例子。 椅子有座位。 椅子有靠背。 椅子有一组腿。 短语“具有”表示椅子拥有或至少使用另一个对象的关系。 正是这种“有”的关系才是构成的基础 优点 控制可见度 实现可以代替运行时间 松耦合作为接口类不依赖于实现。 组成与继承之间的区别 没有。 组成有 继承是 1个 提倡多态和代码重用 提倡多态和代码重用 2 在运行时完成时获取对象 在编译时动态获取对象 3 可以在运行时替换实现 可以在编译时替换实现 4 子类不依赖于父类而是支持松散耦合特别是在接口驱动下 子类取决于父类的实现这就是为什么紧密耦合的原因 5 在房屋设有浴室时使用。 说房子是浴室是不正确的 继承是单向的。 例如房屋是建筑物。 但是建筑物不是房子 注意不要仅使用继承来获得代码重用。 如果没有“存在”关系则使用组合进行代码重用。 对象关系中组合和聚合之间的差异 聚合聚合是一个类别属于一个集合的关联。 这是整体关系的一部分其中一部分可以没有整体而存在。 这是较弱的关系。 无循环依赖性。 示例订单和产品 组合组合是一个类别属于一个集合的关联。 这是整体关系的一部分其中没有整体就不可能存在一部分。 如果整体被删除则所有部分都被删除。 这是更牢固的关系。 例如多边形和点订单和订单详细信息 参考文献 http://stackoverflow.com/ http://en.wikipedia.org/ 有效的Java™ 参考 Java面试参考指南–第1部分来自我们的JCG合作伙伴 Nitin Kumar位于Tech My Talk博客上。 翻译自: https://www.javacodegeeks.com/2014/02/java-interview-reference-guide-part-1.html