如果抽象类中的公共构造函数只能由其派生类调用,那么它应该在功能上等同于受保护的构造函数.对?
在抽象类中声明公共构造函数而不是受保护构造函数有什么区别吗?你会用它做什么用的?为什么编译器没有投诉?
我知道通常我无法实例化协议。但是如果我在协议中包含一个初始化程序,那么编译器肯定知道当协议稍后被结构或类使用时,它会有一个可以使用的 init 吗?我的代码如下所示:
protocol Solution {
var answer: String { get }
}
protocol Problem {
var pose: String { get }
}
protocol SolvableProblem: Problem {
func solve() -> Solution?
}
protocol ProblemGenerator {
func next() -> SolvableProblem
}
protocol Puzzle {
var problem: Problem { get }
var solution: Solution { get }
init(problem: Problem, solution: Solution)
}
protocol PuzzleGenerator {
func next() -> Puzzle
}
protocol FindBySolvePuzzleGenerator: PuzzleGenerator {
var problemGenerator: ProblemGenerator { get }
}
extension …Run Code Online (Sandbox Code Playgroud) abstract class Two {
Two() {
System.out.println("Two()");
}
Two(String s) {
System.out.println("Two(String");
}
abstract int display();
}
class One {
public Two two(String s) {
return new Two() {
public int display() {
System.out.println("display()");
return 1;
}
};
}
}
class Ajay {
public static void main(String ...strings ){
One one=new One();
Two two=one.two("ajay");
System.out.println(two.display());
}
}
Run Code Online (Sandbox Code Playgroud)
我们无法实例化一个抽象类,那么为什么函数 二二(String s)能够创建一个抽象类的实例Two ????