接口与抽象

封装:每个对象都包含它能进行操作所需要的信息,而不依赖其它对象来完成自己的操作,称为封装。

封装的好处:良好的封装能减少耦合,类内部的实现可以自由的修改,类具有清晰的对外接口。

继承者可以完全替换被继承者,反之则不成立。继承定义了如何互相关联,共享特性。

Protected 表示继承时子类可以对基类有完全的访问权,对子类公开,但不对其它类公开。子类从它的父类中继承的成员有方法,或,属性,事件,索引指示器,但对于构造函数,它不能被继承,只能被调用,对于调用父类的成员,可以用basee 关键字。

继承有缺点,继承会破坏包装,父类的实现细节会暴露给子类,继承显然是一种类与类之间强耦合的关系。

多态:不同的对象可以执行相同的操作,但要通过他们自己的实现代码来执行。

为了使子类的实例完全接替来自父类的成员,父类必须将该成员声明为虚拟的。即在该成员的返回类型前加上 Virtual 来实现。子类可以用 Override 关键字来重写该方法。

多态的原理是:当方法被调用时,无论对象是否被转换为其父类,都只有位于对象继承链的最末端的方法实现会被调用,也就是说,虚方法是按照其运行时类型而非编译时类型进行动态绑定调用的。

抽象;

抽象类不能实例化,抽象方法是必须被子类重写的方法,如果类中包含抽象方法,那么类就必须定义为抽象类,不论是否还包含其它一般方法。

抽象类应该拥有尽可能多的共同代码,拥有尽可能少的数据。

抽象类通常代表一个抽象的概念,它提供一个继承的出发点,当设计一个新的抽象类时,一定是用来继承的,所以,在一个以继承关系形成的等级结构里面,树叶节点应该是具体的类,而树枝节点均应当是抽象类。

接口:

接口是把隐式公共属性和方法组合起来,以封装特定功能的一个集合,一旦实现了接口,类就可以支持接口所指定的所有属性和成员。但不允许提供接口中任何成员的执行方式。

实现接口的类,必须实现接口中定义的所有方法和属性。

一个类可以支持多个接口, 多个类可以支持相同的接口。

接口中的方法或属性前面不能有修饰符,方法没有方法体。

一个类只能继承一个抽象类,但可以富丽多个接口。类是对对象的抽象,抽象类是对类的抽象,接口是对行为的抽象。接口是对类的局部行为进行抽象,而抽象类是对类整体(字段,属性,方法)的抽象,如果行为跨越不同类的对象,可使用接口,对于一些相似的类对象,使用继承抽象类。从设计角度讲,抽象类是从子类中发现了公共的东西,泛化出父类,然后子类继承父类,而接口是根本不知子类的存在,方法如何实现还不确认,预先定义。

ArrayList 是 ArrayList 可以保存的元素数,ArrayList 的默认初始容量是0,随着元素添加到ArrayList 中,容量会根据需要重新分配自动增加,使用整数索引可以此集合中的元素。ArrayList 不是类型安全的。对值类型进行装箱时,必须分配并构造一个全新的对象。

泛型:

泛型是具有占位符(类型参数)的类,结构,接口和方法,这些占位符是类,结构,接口,方法,所存储或使用的一个或多个类型占位符,泛型集合类可以将类型参数用作它所存储对象的类型的占位符,类型参数作为其字段的类型和其方法的参数类型出现。

泛型优点类型安全,性能高。

委托:是对函数的封装,可以当作给方法的特征指定一个名称,而事件则是委托的一种特殊形式,当发生特殊的有意义的事情时,事件对象处理通知过程。

委托是一种引用方法的类型,一旦为委托分配了方法,委托将与该方法具有完全相同的行为。

事件是说在发生其它类或对象关注的事情时,类或对象可通过对象通知它们。

时间: 2024-11-10 01:20:07

接口与抽象的相关文章

C#--结构、类与属性、方法、接口、抽象与封密

C#--结构.类与属性 C#--方法 C#--接口.抽象与封密 原文地址:https://www.cnblogs.com/macT/p/9288188.html

接口和抽象的区别

接口和抽象的区别 相同点: ? 1.都位于继承的顶端,用于被其他类实现或继承;? 2. 都不能直接实例化对象;?    3.都可以包含抽象方法,其子类都必须覆写这些抽象方法; 区别:?  1.抽象类为部分方法提供实现,避免子类重复实现这些方法,提高代码重用性;接口只能包含抽象方法;?  2.一个类只能继承一个直接父类(可能是抽象类),却可以实现多个接口;(接口弥补了Java的单继承)?  3.抽象类是这个事物中应该具备的内容, 继承体系是一种 is..a关系?  4.接口是这个事物中的额外内容,

Python全栈之路系列----之-----面向对象4接口与抽象,多继承与多态)

接口类与抽像类 在python中,并没有接口类这种东西,即便不通过专门的模块定义接口,我们也应该有一些基本的概念 编程思想 归一化设计: 1.接口类 不实现具体的方法,并且可以多继承 2.抽象类 可以做一些基础实现,并且不推荐多继承 编程的几类原则: 开放封闭原则:对扩展示开放的,对修改是封闭的依赖倒置原则:高层模块不应该依赖低层模块,二者都应该依赖其抽象:抽象不应该应该依赖细节:细节应该依赖抽象.换言之,要针对接口编程,而不是针对实现编程接口隔离原则:使用多个专门的接口,而不使用单一的总接口.

Effective Java之接口与抽象

我们知道,Java语言只允许实现单继承,但是可以实现多个接口,抽象类也是类啊,所以一个具体的类只能继承一个抽象类,但是在设计抽象类时,肯定是将相关的功能放在一个抽象类里面的,那么针对某个需要实现多种功能的类来讲,继承多个抽象类是不可能的,在这种情况下,接口提供了高度的灵活性,试想一下,一个接口中基本都是相关的且必须实现的方法,那么当某个类需要实现的功能比较多时,它可以很灵活地指定实现多个接口就行,但这样也有一个缺点,接口里面是不提供实现的,但抽象类里面对于非抽象方法,可以提供实现的过程,那么,如

深入浅出:重温JAVA中接口与抽象的区别

抽象类:声明一个抽象类,就是在类的声明开头.在Class关键字的前面使用关键字abstract 下面定义一个抽象类,代码如下: abstract class A{ abstract void callme(); void callmetoo(){ System.out.println("This is a concrete method."); } } class B extends A{ void callme(){ System.out.println("B‘s impl

封装和修饰符,接口,抽象

什么是封装?和public类似的访问修饰符分别有什么作用? 封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面 多个可重复使用的函数封装到一个类里面.在使用时直接实例化该类的某一个方法,获得需要的数据 public(公共的.默认)  protected(受保护的)  private(私有的) public(公共的.默认) 当类的成员被声明为public的访问修饰符时,该成员能被外部代码访问和操作. private(私有的) 被定义为private的成员,对于类内部所有成员都可见,

c# 基础(重写与覆盖:接口与抽象,虚函数与抽象函数)

总结 1:不管是重写还是覆盖都不会影响父类自身的功能(废话,肯定的嘛,除非代码被改). 2:当用子类创建父类的时候,如 C1 c3 = new C2(),重写会改变父类的功能,即调用子类的功能:而覆盖不会,仍然调用父类功能. 3:虚方法.实方法都可以被覆盖(new),抽象方法,接口 不可以. 4:抽象方法,接口,标记为virtual的方法可以被重写(override),实方法不可以. 5:重写使用的频率比较高,实现多态:覆盖用的频率比较低,用于对以前无法修改的类进行继承的时候. 6:关键字:vi

定义接口或者抽象基类

你想定义一个接口或抽象类,并且通过执行类型检查来确保子类实现了某些特定的方法. 解决方案: 使用 abc 模块可以很轻松的定义抽象基类 from abc import ABCMeta, abstractmethod class IStream(metaclass=ABCMeta): @abstractmethod def read(self, maxbytes=-1): pass @abstractmethod def write(self, data): pass 抽象类的一个特点是它不能直接

interface,abstract class,abstract interface Java中的接口,抽象类和抽象接口的异同

接口与抽象类的比较 1.相同点: A. 两者都是抽象类,都不能实例化. B. interface实现类及abstrct class的子类都必须要实现已经声明的抽象方法. 2. 不同点: A. interface需要实现,要用implements,而abstract class需要继承,要用extends. B. 一个类可以实现多个interface,但一个类只能继承一个abstract class. C. interface强调特定功能的实现,而abstract class强调所属关系. D.尽