abstract 相关问题

abstract是由多种面向对象编程语言共享的关键字。可以将方法和类标记为抽象,以指示它们不包含应用程序逻辑的完整实现,并且必须进行扩展。抽象类无法实例化,其目的是为其子类提供统一的接口,以及不必为每个子类重新实现的常用方法的实现。

PHP:接口中的抽象方法

为什么我不能在接口中声明抽象方法? 为什么我不能在接口中声明抽象方法? <?php interface Connection { public abstract function connect(); public function getConnection(); } abstract class ConnectionAbstract implements Connection() { private $connection; public abstract function connect(); public function getConnection() { return $this->connection; } } class MySQLConnection extends ConnectionAbstract { public function connect() { echo 'connecting ...'; } } $c = new MySQLConnection(); ?> 接口中的所有函数都是隐式抽象的。声明函数时不需要使用abstract关键字。 请记住,实现接口的类必须包含一系列与接口中声明的方法签名相对应的公共方法。因此,例如,当您声明一个定义了 public abstract function 的接口时,您实际上是在说每个实现该接口的类都必须有一个名为 connect 的公共抽象方法。由于具有抽象方法的对象无法实例化,因此您最终将编写一个永远无法使用的接口。 Connection接口中的两个方法都是抽象的。接口中的所有方法都是隐式抽象的。因此 connect() 方法不需要使用 Abstract 关键字。

回答 3 投票 0

MethodInfo.Invoke(未将对象引用设置为对象的实例。)在抽象类中调用静态方法

我正在尝试通过反射复制功能,但最终得到 createFormatMethod.Invoke(typDbFormatClass, null)' 抛出类型为 'System.Reflection.TargetInitationExce...

回答 1 投票 0

如何在lambda表达式中抽象方法调用?

给出以下两种方法(不是可编译的代码,只是结构): 受保护的字符串mapABC( 实体实体,@Context MappingContext 映射上下文){ 返回Optional.ofNullable(

回答 1 投票 0

创建 Java 子类的层次结构

我正在尝试在java中设置位置的层次结构。地点可大可小,较大的地点包含较小的子地点。所以,世界包含国家,国家包含城市,等等......

回答 4 投票 0

在tcl9.0中使用oo::configurable

我正在玩新版本tcl9.0中的configure,它可以工作,但我有一个问题: 如何使类既可配置又抽象? 我尝试这样做: oo::abstract 创建模拟器 { ...

回答 1 投票 0

如何在重写抽象函数时将参数类型指定为派生类类型,其中参数是基类的类型?

如何在SpecificResult类中指定LimitsPassed函数的参数类型? 显然,此处显示的代码无法编译,因为派生类中的类型与基类定义不匹配...

回答 1 投票 0

我的泛型类似乎不是*那个*泛型

我目前正在创建一个小型植物护理游戏(Unity Engine 2022.3.40f1)。它的属性(基因)作为基因组传递到它的各个部分。这些属性可以是浮点数、整数或颜色。 为了...

回答 1 投票 0

我的泛型类似乎不是*那个*泛型

我目前正在创建一个小型植物护理游戏(Unity Engine 2022.3.40f1)。它的属性(基因)作为基因组传递到它的各个部分。这些属性可以是浮点数、整数或颜色。 佛...

回答 1 投票 0

抽象类是否由其子类实例化?

虽然您无法创建抽象类的实例,但在本例中,super 关键字用于引用超类的实例变量,因此 ab 中提供了引用...

回答 1 投票 0

所有抽象类都是父类吗?

我几个月前开始学习Java。我想知道是否所有抽象类都是父类。 抽象类中的抽象方法没有主体。那么抽象方法就该结束了...

回答 1 投票 0

PHP抽象类子类的返回类型

PHP 中的抽象类如何返回扩展它的子类的类型? 抽象类 MyAbstractClass { 公共静态函数 fromID($id) : returnType { <====== ... } } cl...

回答 5 投票 0

在 Angular 14 应用程序中扩展类中声明的变量的更改检测

我正在寻找最好的方法来检测 Angular 扩展类中声明的属性的变化。 ngOnChanges 不会检测到这些更改,因为它们不是输入。 我目前

回答 1 投票 0

声明和实例化时抽象类和泛型问题的结合

我正在努力使用 C# 中的一个应用程序,它是一个文档审阅应用程序,用于在文档中搜索搜索词列表。它需要获取 PDF 或 WORD 文档,将来可能还需要获取其他文档。 我

回答 1 投票 0

C# 抽象类和泛型的组合声明和实例化时的问题

我正在努力使用 C# 中的一个应用程序,它是一个文档审阅应用程序,用于在文档中搜索搜索词列表。它需要获取 PDF 或 WORD 文档,将来可能还需要获取其他文档。 我

回答 1 投票 0

向基类构造函数传递参数

如果基类和派生类都有带参数的构造函数,那么我们在哪里将参数传递给基类构造函数?

回答 2 投票 0

如何通过接口调用抽象静态方法?

我正在寻找一种比反射更好的方法来调用一堆类上的静态方法。 考虑一下我有一个工厂是这样播种的: 私有静态 IReadOnlyDictionary 我正在寻找一种比反射更好的方法来调用一堆类上的静态方法。 假设我有一家工厂是这样播种的: private static IReadOnlyDictionary<string, Type> buildableTypes = typeof(IBuildable).Assembly.GetTypes() .Where(t => t.IsSubclassOf(typeof(IBuildable))) .Where(t => !t.IsAbstract) .ToDictionary(t => t.Name, t => t); 并考虑 IBuildable 是这样的: public interfact IBuildable { static abstract bool IsBuildable(string params); } 我想获取给定当前参数的所有可构建类型。 var currentlyBuildableTypes = buildableTypes.Values .Where(t => /* t.IsBuildable(params) */); // not sure what goes here 我想避免实例化每个类,因为可能会有相当多的数量。我可以很容易地通过反射来做到这一点,但考虑到 C# 11 中新的静态抽象接口,我希望有一种更优雅的方式来实现这一点。请注意,在这种情况下,使用泛型似乎也不是一种选择,因为直到运行时我才知道类型。 有时你只需要多介绍几种类型即可。 public interface IBuildable { static abstract bool IsBuildable(string parms); } public abstract class BuildHelper { public abstract Type Type { get; } public abstract bool IsBuildable(string parms); } public class BuildHelper<T> : BuildHelper where T : IBuildable { public override Type Type => typeof(T); public override bool IsBuildable(string parms) => T.IsBuildable(parms); } private static IReadOnlyDictionary<string, BuildHelper> buildableTypes = // TODO, left as an exercise for the reader

回答 1 投票 0

为什么类加载时静态块不运行?

导入java.io.*; 导入 java.util.*; 公共类 Locations 实现 Map { 私有静态Map位置=新的LinkedHashMap import java.io.*; import java.util.*; public class Locations implements Map<Integer, Location> { private static Map<Integer, Location> locations = new LinkedHashMap<Integer, Location>(); private static Map<Integer, IndexRecord> index = new LinkedHashMap<>(); private static RandomAccessFile ra; static { try { ra = new RandomAccessFile("locations_rand.dat", "rwd"); int numLocations = ra.readInt(); long locationStartPoint = ra.readInt(); int i=0; while(ra.getFilePointer() < locationStartPoint) { int locationId = ra.readInt(); int locationStart = ra.readInt(); int locationLength = ra.readInt(); IndexRecord record = new IndexRecord(locationStart, locationLength); index.put(locationId, record); System.out.println(i++); } } catch(IOException e) { System.out.println("IOException in static initializer: " + e.getMessage()); } } public static void main(String[] args) throws IOException {} 静态块的执行 我稍微修改了你的代码,但看不到任何缺陷。有了这个代码 public class Main { static { System.out.println("Static initializer"); } public static void main(String[] args) { System.out.println("Main method"); } } 我得到了预期的输出: Static initializer Main method 您可能没有注意到,因为没有抛出异常,但没有数据可供读取。

回答 1 投票 0

有没有办法创建一个不能在程序集之外实现的公共.NET接口?

为了保持.NET 中的二进制向后兼容性,通常不能向公共类和接口添加新的抽象方法。如果这样做,则针对旧版本的

回答 3 投票 0

无法实例化抽象类?

我得到了这个: 核心类 { 受保护: 静态无符号 int id_seed; 无符号整型 ID; std::字符串状态; 民众: 朋友级CPU; 核(); 〜核心(); 虚拟虚空处理器...

回答 1 投票 0

使用 BioPython 从 PubMed 中提取摘要并写入 CSV

我对Python很陌生,想使用bio entrez包从pubmed中提取摘要。我可以根据给定的 ID 列表获取摘要并写入 csv。 我的代码是: 论文 = fetch_det...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.