首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JavaSE学习总结(五)——封装,继承,多态很简单

JAVA不支持多继承,单继承使JAVA继承关系很简单,一个只能有一个父,易于管理程序,父子类一般化,子类是父特殊化(具体化) 父):人   子类(派生):学生 学生继承人,人派生出学生...继承所表达就是一种对象之间相交关系,它使得某类对象可以继承另外一对象数据成员和成员方法。...Java继承特征 2.2.1、传递性 若C继承B,B继承A(多继承),则C既有B那里继承下来属性与方法,也有A那里继承下来属性与方法,还可以有自己新定义属性和方法。...LSP讲的是子类关系。只有当这种关系存在时,里氏代换关系才存在。 子类一定可以替换父子类信息量一定大于父。...因为在程序运行时才确定具体,这样,不用修改源程序代码,就可以引用变量绑定到各种不同实现上,从而导致该引用调用具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定具体代码,程序可以选择多个运行状态

1.2K71

Java面试之基础及语法

来处理 * JVM有一个默认异常处理机制 就讲该异常进行处理 * 并将该异常名称 异常信息 异常出现位置打印在控制台上 同时将程序停止运行 * BigInteger * 他可以超过Integer...2)继承:继承是一种联结层次模型,并且允许和鼓励重用,它提供了一种明确表述共性方法。对象一个新可以现有的中派生,这个过程称为继承。...新继承了原始特性,新称为原始派生子类),而原始称为新(父)。派生可以那里继承方法和实例变量,并且可以修改或增加新方法使之更适合特殊需要。...不能创建abstract 实例。然而可以创建一个变量,其类型是一个抽象,并它指向具体子类一个实例。不能有抽象构造函数或抽象静态方法。...Abstract 子类为它们父所有抽象方法提供实现,否则它们也是抽象为。取而代之,在子类中实现该方法。知道其行为其它可以中实现这些方法。接口(interface)是抽象变体。

43330
您找到你想要的搜索结果了吗?
是的
没有找到

JAVA实习生面试问题

2)运行多态:主要体现在OO设计继承性上,子类对象也是父对象,即上溯造型,所以子类对象可以作为父对象使用,父对象变量可以指向子类对象。...然而可以创建一个变量,其类型是一个抽象,并它指向具体子类一个实例。不能有抽象构造函数或抽象静态方法。Abstract 子类为它们父所有抽象方法提供实现,否则它们也是抽象为。...取而代之,在子类中实现该方法。知道其行为其它可以中实现这些方法。         接口(interface)是抽象变体。在接口中,所有方法都是抽象。多继承性可通过实现这样接口而获得。...2)继承:继承是一种联结层次模型,并且允许和鼓励重用,它提供了一种明确表述共性方法。对象一个新可以现有的中派生,这个过程称为继承。...派生可以那里继承方法和实例变量,并且可以修改或增加新方法使之更适合特殊需要。         3)封装:封装是把过程和数据包围起来,对数据访问只能通过已定义界面。

54330

流畅 Python 第二版(GPT 重译)(七)

Python 术语表中关于抽象条目对它们为鸭子类型语言带来价值有很好解释: 抽象通过提供一种定义接口方式来补充鸭子类型,当其他技术(如hasattr())显得笨拙或微妙错误时(例如,使用魔术方法...ABCs 引入虚拟子类这些子类不继承自一个但仍然被isinstance()和issubclass()所识别;请参阅abc模块文档。⁵ 鹅式类型检查是一种利用 ABCs 运行时类型检查方法。...— A.M. ⁷ 多重继承被认为是有害,并且在 Java 中被排除,除了接口:Java 接口可以扩展多个接口,Java 可以实现多个接口。...我假设你对这些概念有基本了解,你可能从阅读Python 教程或其他主流面向对象语言(如 Java、C#或 C++)经验中了解这些概念。...该 PEP 引入了一个@final装饰器,可应用于或单独方法,以便 IDE 或类型检查器可以报告误用尝试对这些进行子类化或覆盖这些方法情况。

8510

Python 学习入门(30)—— 多态

多态性允许将父对象设置成为和一个或多个它子对象相等技术,比如Parent~Child,多态性使得能够利用同一)类型指针来引用不同类(子类对象,以及根据所引用对象不同,以不同方式执行相同操作...c++中多态更容易理解概念 允许父指针或名称来引用子类对象或对象方法,而实际调用方法为对象类型方法。...在使用鸭子类语言中,这样一个函数可以接受一个任意类型对象,并调用它走和叫方法。如果这些需要被调用方法不存在,那么将引发一个运行时错误。...,所以可以得到预期效果(java角度预期) e并不是A类型变量但是根据鸭子类型,走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子,e有pout方法,所以在test方法中e...以上是java角度分析,其实上边都是一派胡言,只是为了说明python中运行方法。没有谁规定test方法是接收参数是什么类型。test方法只规定,接收一个参数,调用这个参数pout方法

41810

Java中静态代码块、构造代码块、构造函数、普通代码块

比如一个项目启动需要加载很多配置文件等资源,我们就可以都放入静态代码块中。   ④、静态代码块不能存在任何方法体中   这个应该很好理解,首先我们要明确静态代码块是在加载时候就要运行了。...不管是哪种方法,我们需要明确静态代码块存在在加载时候就自动运行了,而放在不管是普通方法还是静态方法中,都是不能自动运行。   ...尽管方法体本身不会自动返回什么,但仍然可以它返回一些东西,而这些东西可能是不安全;   3.构造函数不能被直接调用,必须通过new运算符在创建对象时才会自动调用;而一般方法是在程序执行到它时候被调用...6、父子类执行顺序   对象初始化顺序:   首先执行父静态内容,父静态内容执行完毕后,接着去执行子类静态内容,当子类静态内容执行完毕之后,再去看父有没有构造代码块,如果有就执行父构造代码块...,父构造代码块执行完毕,接着执行父构造方法;父构造方法执行完毕之后,它接着去看子类有没有构造代码块,如果有就执行子类构造代码块。

1.3K20

SOLID之LSP

正是子类可替换性才使得使用类型模块在无需修改情况下就可以扩展,对于LSP违反常常会导致以明显违反OCP方式使用运行时类型辨别(RTTI),这种方式常常是使用一个显式if语句或才if/else...f编写者会想去对D进行一些测试,以便于在把D对象传递给f时,可以使f具有正确行为。...这个测试违反了OCP,因为此时f对于B所有派生都不再是封闭 IS-A “IS-A”是严格分类学意义上定义,意思是一个是另一个一种” 我们经常说继承是IS-A关系,也就是如果一个新类型对象被认为和一个已有对象之间满足...用户不应该被派生输出扰乱 简单判断就是“可替换性”,子类是否能替换父并保持原有行为不变 LSP与架构 LSP诞生开始,也就差不多这些内容,主要是指导如何使用继承关系一种方法。...随着时间推移,在更宏观上,LSP逐渐演变成了一种更广泛、指导接口与其实现方式设计原则 可以java风格接口,具有多个实现:甚至可以是几个服务响应同一个rest接口,用户都依赖于一种接口,并且都期待实现该接口之间能具有可替换性

64530

再谈 Python 中继承(译)

这有可能造成三人互相争论,每个人都认为自己方式正确,永远不去找共同点。我们都看到过这些讨论是如何展开。 根据我经验,如果严格分开使用——一种是好一种是可选但有用,还有一种是差。...你依赖那些你可能无法控制、彼此不了解,在同一个命名空间中共存。 另一个问题是,你无法控制暴露给用户方法和属性。它们就在那里,污染了你 API。...---- 使用 ABC 定义接口一个「好处」是,通过继承它们,你可以在抽象中添加普通方法来偷渡到代码共享。但正如一开始提到:混合子类类型是个坏主意。...因此,一个可以各种包中实现许多协议而无需它们存在!...这意味着提供了一个整体控制流程,而子类则填补了一些细节: 用户实例化一个子类, 然后调用方法, 其中又调用了子类方法

20650

Python中接口协议和抽象

比如Sequence正式接口如下图所示: 这些都叫做Python接口。事实上,Python每个都有接口,除了抽象。...猴子补丁 我们可以通过猴子补丁来进一步认识,Python中协议约定是怎么回事。猴子补丁是这样一种技术:在运行时修改或模块,而不改动源码。...抽象 Python抽象是指必须继承它子类去实现它所要求方法。...白鹅类型是指只要cls是抽象(即cls是abc.ABCMeta),就可以使用isinstance(obj, cls)。它基本特性是,即便不继承,也有办法把一个注册为抽象虚拟子类。...参考资料: 《流畅Python》第11章 接口:协议到抽象

1.6K30

经典笔试题-Java基础篇

2)继承:继承是一种联结层次模型,并且允许和鼓励重用,它提供了一种明确表述共性方法。对象一个新可以现有的中派生,这个过程称为继承。...新继承了原始特性,新称为原始派生子类),而原始称为新(父)。派生可以那里继承方法和实例变量,并且可以修改或增加新方法使之更适合特殊需要。...【基础】 答:JVM 中装载是由ClassLoader 和它子类来实现,Java ClassLoader是一个重要Java 运行时系统组件。它负责在运行时查找和装入文件。...然而可以创建一个变量,其类型是一个抽象,它用于要创建一个体现某些基本行为,并为该类声明方法,但不能在该类中实现该类情况。不能创建abstract 实例并它指向具体子类一个实例。...不能有抽象构造函数或抽象静态方法。Abstract 子类为它们父所有抽象方法提供实现,否则它们也是抽象为。取而代之,在子类中实现该方法。知道其行为其它可以中实现这些方法

71220

JAVA程序员面试30问(附带答案)

重写Overriding是父子类之间多态性一种表现,重载Overloading是一个中多态性一种表现。...然而可以创建一个变量,其类型是一个抽象,并它指向具体子类一个实例。不能有抽象构造函数或抽象静态方法。Abstract 子类为它们父所有抽象方法提供实现,否则它们也是抽象为。...取而代之,在子类中实现该方法。知道其行为其它可以中实现这些方法。 接口(interface)是抽象变体。在接口中,所有方法都是抽象。多继承性可通过实现这样接口而获得。...引用可以转换到接口类型或接口类型转换,instanceof 运算符可以用来决定某对象是否实现了接口。...启动一个线程是调用start()方法,使线程所代表虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出标志来停止一个线程。

37620

原创 | 抽象开始,详解责任链模式

抽象 首先,我们先来看这个抽象。在原生Python当中,其实是没有抽象这么一个概念。抽象其实就是含有抽象方法。...所以我们可以创建它实例。抽象是实现多态一种重要方法,在强变量类型语言当中,我们通过抽象抽象出了多个子类共同结构。这样我们就可以通过父指针调用各种子类对象了,这是非常方便。...变量赋值时候对于类型根本没有限制,我们可以做任何调用。 举个例子,比如我们当下有A、B和C这三个实例。哪怕这三个毫无关系,我们也可以用一个变量去分别接收这些实例然后调用同名方法。...这里abc不是随意起名字,其实是abstract basement class缩写。加上了这个装饰器之后,它会替我们去检查所有子类有没有实现抽象方法。如果没有的话,那么会报错提示我们。...所谓实现也就是抽象子类,实现了各自抽象方法。这样我们在每个节点当中调用self.successor.handle时候才可以执行。

51120

JAVA面试题解惑——final、finally和finalize区别

不过子类仍然可以定义同父 private方法具有同样结构方法,但是这并不会产生重写效果,而且它们之间也不存在必然联系。 最后我们再来回顾一下final用于情况。...那么,有没有一种情况使finally语句块得不到执行呢?大家可能想到了return、continue、break这三个可以打乱代码顺序执行语句规律。...直到 JAVA虚拟机停止运行,有些对象finalize()可能都没有被运行过,那么怎样保证所有对象这个方法JAVA虚拟机停止运行之前一定被调用 呢?...code } 给这个方法传入true就可以保证对象finalize()方法JAVA虚拟机停止运行前一定被运行了,不过遗憾是这个方法是不安全,它会导致有用对象finalize()被误调用...由于finalize()属于Object,因此所有都有这个方法,Object任意子类可以重写(override)该方法,在其中释放系统资源或者做其它清理工作,如关闭输入输出流。

65760

《流畅Python》第十一章学习笔记

,转而关注对象有没有实现所需方法、签名和语义。...在框架之外,鸭子类型通常比类型检查更简单,也更灵活 抽象 collections.abc中有很多有用抽象 Python抽象可以使用register方法在终端用户代码中把某个「声明」为一个抽象...解释器把调用分派给正确方法,而不是if/elif/else块硬编码分派逻辑 抽象是用于封装框架引入一般性概念和抽象。...注册虚拟子类方法是在抽象上调用register方法。issubclass和 isinstance等函数都能识别,但是注册不会抽象中继承任何方法或属性。...为了避免运行错误,虚拟子类需要实现所需全部方法

44910

每个程序员都应学习编程原则

里氏替换原则是实现开闭原则重要方式之一,由于使用对象地方都可以使用子类对象,因此在程序中尽量使用类型来对对象进行定义,而在运行时再确定其子类类型,用子类对象来替换父对象。...使用里氏替换原则时需要注意,子类所有方法必须在父中声明,或子类必须实现父中声明所有方法。...尽量把父设计为抽象或者接口,子类继承父或实现父接口,并实现在父中声明方法运行时,子类实例替换父实例,我们可以很方便地扩展系统功能,同时无须修改原有子类代码,增加新功能可以通过增加一个新子类来实现...大局来说Java接口可以实现多继承就是接口隔离原则基础保障。...;继承而来派生是静态,不可能在运行时间内发生改变,因此没有足够灵活性。

28910

Java设计模式-装饰者模式

通常是一个抽象或者一个接口,定义了属性或者方法方法实现可以子类实现或者自己实现。通常不会直接使用该类,而是通过继承该类来实现特定功能,它约束了整个继承树行为。...ConcreteComponen是Component子类,实现了相应方法,它充当了“被装饰者”角色。 Decorator也是Component子类,它是装饰者共同实现抽象(也可以是接口)。...创建Component 因为总体对象是人,所以我们可以把人抽象为,新建Person.java: public abstract class Person { String description...,但是具体实现不同,Teenager是Person直接子类,表示了被装饰者;Teenager、Shirt是装饰者,保存了Person引用,实现了cost()方法,并且在cost()方法内部,不但实现了自己逻辑...我们来看看JavaIO是怎样使用装饰者模式字符流来分析,我们知道,有两个,分别是InputStream和OutputStream,它们也就是我们上面所述Component

81130

Java 继承、多态与复用

如果两个存在继承关系,则子类会自动继承父方法和变量,在子类可以直接调用父方法和变量。需要指出是,在java中,只允许单继承,也就是说,一个最多只能显式地继承于一个父。...多态   我们知道 继承允许将对象视为它自己本身类型或其类型加以处理,从而使同一份代码可以毫无差别地运行这些不同类型之上。...其中,多态方法调用允许一种类型表现出与其他相似类型之间区别,只要这些类型由同一个所导出。...基于动态绑定机制,我们就可以编写只与打交道代码了,并且这些代码对所有的导出可以正确运行。或者说,发送消息给某个对象,该对象去断定该做什么事情。...前者是一个中多态性一种表现,后者是父子类之间多态性一种表现。 ---- (2) 实现机制 重载是一种参数多态机制,即通过方法参数差异实现多态机制。

66120

测试开发实战|如何利用 xUnit 框架对测试用例进行维护?

:用例可以独立运行 基本测试 demo 运行运行结果: 2.4 用例间执行顺序 Junit4: Default 取决于反射方法获得列表,顺序固定(不保险) @FixMethodOrder(MethodSorters.JVM...:进图特定 tab 子功能页面@AfterClass:关闭 app @AfterClassdriver.quit 2.6 继承关系下测试流程 流程顺序: 父 @BeforeClass 子类...实操演示 1 现在创建一个子类 Junit4DemoChildrenTest,继承 Junit4DemoTest,然后实现和父一样方法运行子类运行结果: 运行结果中我们可以看到,子类会将与父中一样方法进行覆盖...,只执行子类方法 实操演示 2 现在将子类方法名进行修改,使其与父方法名不同,再运行子类运行结果: 我是 @BeforeClass,我是第一步 我是 Children@BeforeClass...4)总览 测试结果: 测试结果可以看到 3 组参数分别传入方法中,方法各执行了一次,完成参数化测试 3、总结-测试用例顺序 测试用例之间顺序 test fixtures 顺序 继承顺序 套件之间顺序

97810
领券