抽象类

JAVA接口基础知识总结

我是研究僧i 提交于 2020-03-30 01:27:32
1:是用关键字 interface 定义的。 2:接口中包含的成员,最常见的有全局常量、抽象方法。 注意:接口中的成员都有固定的修饰符。 成员变量:public static final 成员方法:public abstract interface Inter{ public static final int x = 3; public abstract void show(); } 3:接口中有抽象方法,说明 接口不可以实例化 。 接口的子类必须实现了接口中所有的抽象方法后,该子类才可以实例化。否则,该子类还是一个抽象类。 4:类与类之间存在着继承关系,类与接口中间存在的是 实现 关系。 继承用extends ;实现用implements ; 5:接口和类不一样的地方,就是, 接口可以被多实现 ,这就是多继承改良后的结果。java将多继承机制通过多现实来体现。 6:一个类在继承另一个类的同时,还可以实现多个接口。所以 接口的出现避免了单继承的局限性 。还可以将类进行功能的扩展。 7:其实java中是有多继承的。接口与接口之间存在着继承关系, 接口可以多继承接口 。 接口都用于设计上,设计上的特点: (可以理解主板上提供的接口) 1 :接口是对外提供的规则。 2 :接口是功能的扩展。 3 :接口的出现降低了耦合性。 抽象类与接口: 抽象类: 一般用于描述一个体系单元

笔试一(填空简答题)

女生的网名这么多〃 提交于 2020-03-29 09:02:06
1 . .NET 中类和结构的区别? 类: 能声明默认构造函数、析构函数 , 引用类型 ,在 托管堆 上存储,如string, 能被继承 结构: 不能声明默认构造函数、 析构函数 , 值类型 ,在 内存栈 上分配地址,如int32, 不能被继承( 没有abstract 和sealed ), 可以不使用new 初始化 相同之处:基类型都是Object 如何选择用结构还是类: 1. 堆栈的空间有限,对于大量的逻辑的对象,创建类要比创建结构好一些 2. 结构表示如点、矩形和颜色这样的轻量对象 3.多层次,多对象用类 4.如果数据简单,而且数据量小 用结构 2.C#中值类型和引用类型的区别? 值类型: 内存栈 ,快,内存分配自动释放 引用类型: 内存堆 ,慢, 内存分配 由GC控制 3.堆和栈的区别? 栈: 编译期间 就分配好的内存空间,大小已定,无需管理,自动释放 堆: 运行时 分配的内存空间,大小动态改变, 由GC控制 关系:具体信息请看http://www.2cto.com/kf/201109/103302.html 4 .什么是抽象类,是否可以实现接口,是否可以继承实体类,什么是接口,接口和抽象类有什么区别?接口是否可以继承接口,抽象类是否可以实现接口,抽象类是否可以继承实体类? 抽象类在定义类型方法的时候, 可以给出方法的实现部分,也可以不给出 ,而接口所定义的方法 都不能给出

sealed、new、virtual、abstract与override 总结

≯℡__Kan透↙ 提交于 2020-03-27 09:53:18
1. sealed——“断子绝孙” 密封类不能被继承。密封方法可以重写基类中的方法,但其本身不能在任何派生类中进一步重写。当应用于方法或属性时,sealed修饰符必须始终与override一起使用。 即:密封类不会有子类,所以是“断子绝孙”。 2. new——“你是我的,我是我的” new关键字用于显式隐藏从基类继承的成员。也就是在使用派生类时调用的方式方法是new关键字新定义出来的方法,而不是基类的方法。 在不使用new修饰符的情况下隐藏成员是允许的,但会生成警告。使用new显式隐藏成员会取消此警告,并使用派生类新定义的方法。 即:好比是不用祖宗的东西,而是用自己创造(new)的东西。 3. virtual——“为了子孙后代” virtual关键字用于修改方法或属性的声明,在这种情况下,方法或属性被称做虚成员。虚成员的实现可由派生类中的重写成员更改。 调用虚方法时,将为重写成员检查该对象的运行时类型。将调用大部分派生类中的该重写成员,如果没有派生类重写该成员,则它可能是原始成员。 在默认情况下,方式是非虚拟的。非虚方法不能重写。 不能将virtual修饰符与一下修饰符一起使用:static、abstract和override。 除了声明和调用语法不同外,虚拟属性的行为与抽象方法一样。 在静态属性上使用virtual修饰符是错误的。 通过override修饰符的属性声明

常见的JAVA面试题

≡放荡痞女 提交于 2020-03-27 07:31:15
1.开发中都用到了那些设计模式?用在什么场合? 每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相同的工作。主要用到了MVC的设计模式。用来开发JSP/Servlet或者J2EE的相关应用。简单工厂模式等。 2. 说说你所熟悉或听说过的j2ee中的几种常用模式?及对设计模式的一些看法 Session Facade Pattern:使用SessionBean访问EntityBean   Message Facade Pattern:实现异步调用   EJB Command Pattern:使用Command JavaBeans取代SessionBean,实现轻量级访问   Data Transfer Object Factory:通过DTO Factory简化EntityBean数据提供特性   Generic Attribute Access:通过AttibuteAccess接口简化EntityBean数据提供特性   Business Interface:通过远程(本地)接口和Bean类实现相同接口规范业务逻辑一致性   EJB架构的设计好坏将直接影响系统的性能、可扩展性、可维护性、组件可重用性及开发效率。项目越复杂,项目队伍越庞大则越能体现良好设计的重要性。 3.

试题

牧云@^-^@ 提交于 2020-03-27 03:29:55
讲一讲并行和并发 进程的线程的区别 进程是资源分配的最小单位,线程是程序执行的最小单位。 进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵。而线程是共享进程中的数据的,使用相同的地址空间,因此CPU切换一个线程的花费远比进程要小很多,同时创建一个线程的开销也比进程要小很多。 线程之间的通信更方便,同一进程下的线程共享全局变量、静态变量等数据,而进程之间的通信需要以通信的方式(IPC)进行。不过如何处理好同步与互斥是编写多线程程序的难点。 但是多进程程序更健壮,多线程程序只要有一个线程死掉,整个进程也死掉了,而一个进程死掉并不会对另外一个进程造成影响,因为进程有自己独立的地址空间。 进程间通信的有哪几种方式 管道(Pipe)及有名管道(named pipe): 信号量 共享内存 信号(Signal) 报文(Message)队列(消息队列) 套接字 线程间资源可以共享吗,进程间呢 Java并发,说一说了解哪些,volatie个synchronized的 volatile本质是告诉JVM当前变量在寄存器中的值是不确定的,需要从主存中读取。synchronized则是锁定当前变量,只有当前线程可以访问该变量,其它线程被阻塞。 volatile仅能使用在变量级别,synchronized则可以使用在变量、方法。

详解接口与抽象类的异同点

牧云@^-^@ 提交于 2020-03-26 10:17:27
相同之处 接口和抽象类都不能被实例化,只能被其他类实现和继承 接口和抽象类都可以包含抽象方法,实现接口或继承抽象类的普通子类必须实现这些抽象方法 不同之处 从设计层面来说 抽象是对类的抽象,是一种模板设计,接口是对行为的抽象,是对行为的规范 从组成上来说 接口里只能包含抽象方法、静态方法、默认方法和私有方法,不能为普通方法提供方法实现,抽象类则完全可以包含普通方法。 接口里只能定义公共静态常量,不能定义普通成员变量;抽象类既可以定义普通成员变量也可以定义静态常量。 接口里不包含构造器;抽象类里可以包含构造器,抽象类里的构造器并不是用于创建对象,而是让其子类调用这些构造器来完成属于抽象类的初始化操作。 接口里不能包含初始化;但抽象类则完全可以包含初始化块 从用法上来说 一个类最多只能有一个父类,包括抽象类;但一个类可以实现多个接口 补充 抽象类是从多个类中抽象出来的模板,接口是更彻底的抽象,接口定义了多个类共同的行为规范,接口实现了规范与实现分离 一个接口可以有多个父接口,但接口只能继承接口,不能继承类 JDK8 的时候接口可以有默认方法和静态方法功能。 JDK9 在接口中引入了私有方法和私有静态方法。 私有方法主要作用就是作为工具方法使用,为接口中的类方法和默认方法提供支持。Java8允许在接口中定义带方法体的抽象方法和类方法,当两个默认方法或者类方法中包含一段相同的实现逻辑时

C#--抽象类(转载)

时间秒杀一切 提交于 2020-03-26 09:45:02
在C#中使用关键字 abstract 来定义抽象类和抽象方法。 不能初始化的类被叫做抽象类,它们只提供部分实现,但是另一个类可以继承它并且能创建它们 的实例。 "一个包含一个或多个纯虚函数的类叫抽象类,抽象类不能被实例化,进一步 一个抽象类只能通过接口和作为其它类的基类使用."- C++ Programming Language by Stroustrup Chapter13.2 抽象类能够被用于类,方法,属性,索引器和事件,使用abstract 在一个类声明中表示该类倾向要作为其它类的基类 成员被标示成abstract,或被包含进一个抽象类,必须被其派生类实现。 abstract class ShapesClass { abstract public int Area(); } class Square : ShapesClass { int x, y; // Not providing an Area method results // in a compile-time error. public override int Area() { return x * y; } } 例如,一个包含非抽象方法的抽象类: abstract class MyAbs { public void NonAbMethod() { Console.WriteLine("Non-Abstract

抽象类,多态和接口

落花浮王杯 提交于 2020-03-25 10:07:42
抽象 抽象方法必须在派生类中重写,这一点和接口类似,虚方法不必 抽象方法只能在抽象类中声明 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp3 { class Program { static void Main(string[] args) { Son s = new Son(); s.Oprint(); s.Wr(); // father f = new father();不能实例化 father f = s; f.Oprint(); f.Wr(); } } abstract class father { public virtual void Oprint()//虚方法 { Console.WriteLine("调用了father的输出"); } public abstract void Wr(); } class Son : father { public override void Oprint() { Console.WriteLine("调用了Son的输出"); } public override void Wr() { Console

设计模式--- 模板方法模式

半城伤御伤魂 提交于 2020-03-24 09:43:26
故事背景:考题抄错会做也白搭 1. 概述   定义一个操作中的算法的骨架,而将步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤。 2. 模式中的角色   2.1 抽象类(AbstractClass):实现了模板方法,定义了算法的骨架。   2.2 具体类(ConcreteClass):实现抽象类中的抽象方法,已完成完整的算法。 3. 模式解读   3.1 模板方法类图    3.2 模板方法模式代码实现 /// <summary> /// 抽象类 /// </summary> public abstract class AbstractClass { // 一些抽象行为,放到子类去实现 public abstract void PrimitiveOperation1(); public abstract void PrimitiveOperation2(); /// <summary> /// 模板方法,给出了逻辑的骨架,而逻辑的组成是一些相应的抽象操作,它们推迟到子类去实现。 /// </summary> public void TemplateMethod() { PrimitiveOperation1(); PrimitiveOperation2(); Console.WriteLine("Done the method."); } }

设计模式 - 模板方法模式

╄→гoц情女王★ 提交于 2020-03-24 09:42:04
1. 概述   定义一个操作中的算法的骨架,而将步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤。 2. 模式中的角色   2.1 抽象类(AbstractClass):实现了模板方法,定义了算法的骨架。   2.2 具体类(ConcreteClass):实现抽象类中的抽象方法,已完成完整的算法。 3. 模式解读 3.1 模板方法类图    3.2 模板方法模式代码实现 /// <summary> /// 抽象类 /// </summary> public abstract class AbstractClass { // 一些抽象行为,放到子类去实现 public abstract void PrimitiveOperation1(); public abstract void PrimitiveOperation2(); /// <summary> /// 模板方法,给出了逻辑的骨架,而逻辑的组成是一些相应的抽象操作,它们推迟到子类去实现。 /// </summary> public void TemplateMethod() { PrimitiveOperation1(); PrimitiveOperation2(); Console.WriteLine("Done the method."); } } /// <summary> ///