抽象类

java中抽象类跟接口的区别

别说谁变了你拦得住时间么 提交于 2020-03-23 16:40:42
3 月,跳不动了?>>> 含有abstract修饰符的class 即为抽象类,abstract类不能创建实例对象,含有abstract的方法的类必须定义为abstract class ,abstract class 里的方法不必是抽象的,抽象来中定义抽象方法必须放在具体子类中实现,所以呀,不能有抽象的构造方法或抽象的静态方法,如果子类没有实现抽象父类中的所有 方法,那么,子类也必须定义为抽象类。 接口(interface)可以说成是抽象类的特例。接口中的所有方法都必须是抽象的,接口中的方法定义默认为public abstract 。接口中的变量是全局常量,即public static final修饰的。 看一下他们在语法上的区别吧! 1,抽象类里可以有构造方法,而接口内不能有构造方法。 2,抽象类中可以有普通成员变量,而接口中不能有普通成员变量。 3,抽象类中可以包含非抽象的普通方法,而接口中所有的方法必须是抽象的,不能有非抽象的普通方法。 4,抽象类中的抽象方法的访问类型可以是public ,protected和默认类型,但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。 5,抽象类中可以包含静态方法,接口内不能包含静态方法。 6,抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意

C#修饰符

吃可爱长大的小学妹 提交于 2020-03-23 12:00:18
修饰符用于限定类型以及类型成员的申明,c#中有13种修饰符,按功能可分为三部分:存取修饰符,类修饰符和成员修饰符. 存取修饰符: public:存取访问不受限制. private:只有包含该成员的类可以存取.当前类才能访问 internal:只有当前工程可以存取.只限于类所在的命名空间(不包括子类) protected:只有包含该成员的类以及继承的类可以存取. partial关键字: 类修饰符: abstract:抽象类,可以被指示一个类只能作为其它类的基类.必须被继承和重写的 sealed:密封类,指示一个类不能被继承.防止该类被其它类继承 成员修饰符:可以将类、结构或接口的定义拆分到两个或多个源文件中。每个源文件包含类定义的一部分,编译应用程序时将把所有部分组合起来 abstract:指示该方法或属性没有实现.只能在抽象类中声明 const:指定域或局部变量的值不能被改动. event:声明一个事件. extern:指示方法在外部实现. override:对由基类继承成员的新实现. readonly:指示一个域只能在声明时以及相同类的内部被赋值. static:指示一个成员属于类型本身,而不是属于特定的对象. virtual:指示一个方法或存取器的实现可以在继承类中被覆盖. 静态类和类成员用于创建无需创建类的实例就能够访问的数据和函数

2014 Java最新面试题以及答案

筅森魡賤 提交于 2020-03-23 07:16:26
Java面试考点分析 1.C++或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会引发IndexOutOfBoundsException;访问null的对象时会引发NullPointerException。另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。所有的异常都是java.lang.Thowable的子类。 2. Java的接口和C++的虚类的相同和不同处。 由于Java不支持多继承,而有可能某个类或对象要使用分别在几个类或对象里面的方法或属性,现有的单继承机制就不能满足要求。与继承相比,接口有更高的灵活性,因为接口中没有任何实现代码。当一个类实现了接口以后,该类要实现接口里面所有的方法和属性,并且接口里面的属性在默认状态下面都是public static,所有方法默认情况下是public.一个类可以实现多个接口。 3. 垃圾回收的优点和原理。并考虑2种回收机制。 Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制

Java面向对象

狂风中的少年 提交于 2020-03-23 02:30:50
Java继承 Java通过extends关键字来声明一个类从另外一个类继承而来。 class 父类 { } class 子类 extends 父类 { } 示例: //公共父类public class Animal{  private String name;  private int id;  public Animal(String myName, int myid){    name = myName;    id = myid;  }  public void introduction(){    System.out.println("Hello,everyone! My name is " + id + "," + name +".");  }} //子类 public class Penguin extends Animal { public Penguin(String myName, int myid) { super(myName, myid); } } public class Mouse extends Animal { public Mouse(String myName, int myid) { super(myName, myid); } } 继承的特性: 子类拥有父类非private的属性,方法。 子类可以拥有自己的属性和方法

学习Java的第八天

霸气de小男生 提交于 2020-03-22 12:49:33
学习Java的第八天 抽象类和抽象方法 用abstract关键字来修饰一个类,这个类叫做抽象类。 用abstract来修饰一个方法,该方法叫做抽象方法。 抽象方法:只有方法的声明,没有方法的实现。以分号结束: 比如:public abstract void talk(); 含有抽象方法的类必须被声明为抽象类。 抽象类不能被实例化。抽象类是用来被继承的,抽象类的子类必须重 写父类的抽象方法,并提供方法体。若没有重写全部的抽象方法,仍 为抽象类。 不能用abstract修饰变量、代码块、构造器; 不能用abstract修饰私有方法、静态方法、final的方法、final的类。 匿名类 格式: 抽象类创建实例在最右侧加上大括号 并且对抽象方法进行重写 模板方法设计模式 在软件开发中实现一个算法时,整体步骤很固定、通用, 这些步骤已经在父类中写好了。但是某些部分易变,易变部分可以抽 象出来,供不同子类实现。这就是一种模板模式 接口 why: 一方面,有时必须从几个类中派生出一个子类,继承它们所有的属性和方 法。但是,Java不支持多重继承。有了接口,就可以得到多重继承的效果。 另一方面,有时必须从几个类中抽取出一些共同的行为特征,而它们之间又 没有is-a的关系,仅仅是具有相同的行为特征而已。例如:鼠标、键盘、打 印机、扫描仪、摄像头、充电器、MP3机、手机、数码相机、移动硬盘等都

day_25面向对象

╄→尐↘猪︶ㄣ 提交于 2020-03-22 07:35:21
继承的另一种使用方式 最常见的是直接继承一个已经存在的类 当你想要创建一个新的类,发现这个类中的一些在某一个类中已经存在了 那就没必要从头开始写,可以直接继承已有的类,然后作补充 class MyList(list): def __init__(self,element_cls): # 当你覆盖了init方法时 # 不要忘记调用super().init函数让父类完成原有的初始化操作 super().__init__() self.element_cls = element_cls def append(self, object): # if isinstance(object,str) if object.__class__ == self.element_cls: super().append(object) else: print("只能存储%s类型!" % self.element_cls.__name__) 2.python支持多继承,一个类可以同时继承多个父类 好处是更加灵活 问题是属性的查找顺序该怎么确定 #多继承时如果如果多个父类中出现了同名的属性/函数 #就不能用眼睛去判断查找顺序了,需要使用 mro列表来查看真正的继承顺序 #super在访问父类属性的时候,是按照mro列表一层层往上找的 # 多继承虽然更灵活,但是问题也是成正比的.所以尽量不要使用多继承 组合

《设计模式之禅》六大设计原则2

北城以北 提交于 2020-03-21 21:16:17
接口隔离原则 接口隔离原则的定义 接口分为两种: ● 实例接口(Object Interface),在Java中声明一个类,然后用new关键字产生一个实 例,它是对一个类型的事物的描述,这是一种接口。 Java中的类也是一种接口。 ● 类接口(Class Interface),Java中经常使用的interface关键字定义的接口。 那什么是 隔离 呢?它有两种定义,如下所示: ● Clients should not be forced to depend upon interfaces that they don't use.(客户端不应该依 赖它不需要的接口。) ● The dependency of one class to another one should depend on the smallest possible interface. (类间的依赖关系应该建立在最小的接口上。) 可以把这两个定义概括为一句话:建立单一接口,不要建立臃肿庞大的接口。再通 俗一点讲:接口尽量细化。 接口隔离原则是对接口进行规范约束,其包含以下 4层含义: ● 接口要尽量小, 但是 “小”是有限度 的,首先就是不能违反单一职责原则 根据接口隔离原则拆分接口时,首先必须满足单一职责原则。 ● 接口要高内聚 什么是高内聚?高内聚就是提高接口、类、模块的处理能力,减少对外的交互。

C#抽象类与接口的比较

梦想的初衷 提交于 2020-03-21 12:20:54
*/ /*--> */ 相同点 ●都不能被直接实例化,都可以通过继承实现其抽象方法。 ●都是面向抽象编程的技术基础,实现了诸多的设计模式。 不同点 ●接口支持多继承;抽象类不能实现多继承。 ●接口只能定义抽象规则;抽象类既可以定义规则,还可能提供已实现的成员。 ●接口是一组行为规范;抽象类是一个不完全的类,着重族的概念。 ●接口可以用于支持回调;抽象类不能实现回调,因为继承不支持。 ●接口只包含方法、属性、索引器、事件的签名,但不能定义字段和包含实现的方法;抽象类可以定义字段、属性、包含有实现的方法。 ●接口可以作用于值类型和引用类型;抽象类只能作用于引用类型。例如,Struct就可以继承接口,而不能继承类。 通过相同与不同的比较,我们只能说接口和抽象类,各有所长,但无优略。在实际的编程实践中,我们要视具体情况来酌情量才,但是以下的经验和积累,或许能给大家一些启示,除了我的一些积累之外,很多都来源于经典,我相信经得起考验。所以在规则与场合中,我们学习这些经典,最重要的是学以致用,当然我将以一家之言博大家之笑,看官请继续。 规则与场合 1.请记住,面向对象思想的一个最重要的原则就是:面向接口编程。 软件开发网 www.mscto.com 2.借助接口和抽象类,23个设计模式中的很多思想被巧妙的实现了,我认为其精髓简单说来就是:面向抽象编程。 3.抽象类应主要用于关系密切的对象

Java里的File I/O

纵饮孤独 提交于 2020-03-21 04:52:50
Java的输入流主要由:InputStream和Reader作为基类,把持久化数据读入内存。输出流由OutputStream和Write类作为父类。 其中读如内存的时候,不可能一下去全读进去,需要一个缓存区,一块一块的读。如果要再把数据复制到其他磁盘,也可以在循环读的时候把数据再写入目标地址。 Reader抽象类:下有InputStreamReader和BufferedReader(读取字符流文件,自带缓存区,有ReaderLine方法可每次读一行。需要和FileReader类一起使用); InputStreamReader下有FileReader类(读取字符流数据) InputStream抽象类有子类:FileInputStream类(读取字节流数据);FileInputStream类有子类:DataInputStream(用来读取二进制数据)类。 Writer抽象类:下有OutputStreamWriter和【BufferedWriter子类(需要和FileWriter类仪器连用)】;(和Reader类的子类相对应,写入的时候需要标识偏移量从哪开始读,读到哪里。OutputStream读到-1停止,BufferedWriter读到null停止)。 OutputStreamWriter类:下有FileWriter类。 OutputStream抽象类下有子类

java设计原则

家住魔仙堡 提交于 2020-03-20 21:59:36
S.O.L.I.D 能帮助我们成为更优秀的开发人员。 S.O.L.I.D 是面向对象设计(OOD)的头五大基本原则的首字母缩写,由俗称「 鲍勃大叔 」的 Robert C. Martin 提出。 这些原则,结合在一起能够方便程序员开发易于维护和扩展的软件,也让开发人员轻松避免代码异味,易于重构代码,也是敏捷或自适应软件开发的一部分。 面向对象的五大原则: 单一职责原则SRP:Single Responsibility Principle 开放封闭原则OCP:Open-Close Principle Liskov替换原则LSP:Liskov Substitution Principle 依赖倒置原则DIP:Dependency Invertion Principle 接口隔离原则ISP:Interface Separate Principle 在面向对象设计中,如何通过很小的设计改变就可以应对设计需求的变化,这是令设计者极为关注的问题。为此不少OO先驱提出了很多有关面向对象的设计原则用于指导OO的设计和开发。下面是几条与类设计相关的设计原则。 1. 单一职责(the Single Responsibility Principle SRP) 系统中的每一个对象都应该只有一个单独的职责,而所有对象所关注的就是自身职责的完成。 每一个职责都是一个设计的变因,需求变化的时候