抽象方法的使用和 类 不清楚
Usage of abstract methods and classes unclear
我正在学习面向对象编程的概念。其中之一是抽象。我知道任何包含抽象方法的 class 也应该是抽象的,并且抽象 class 不能被实例化。要使用抽象 class 我必须从另一个继承它。
到目前为止一切顺利。让我们看下面的代码:
public abstract class Games {
public abstract void start();
public void stop(){
System.out.println("Stopping game in abstract class");
}
}
class GameA extends Games{
public void start(){
System.out.println("Starting Game A");
}
}
class GameB extends Games{
public void start(){
System.out.println("Starting Game B");
}
}
然后我们有一个 class 和 main
方法:
public class AbstractExample {
public static void main(String[] args){
Games A = new GameA();
Games B = new GameB();
A.start();
A.stop();
B.start();
B.stop();
}
}
但我本可以在 class Games
中写下以下内容:
public void start(){
System.out.print("");
}
那么它就不必是abstract
,输出是一样的,我什至可以实例化Games
class。那么制作抽象方法和classes的关键是什么?
对,所以在某种意义上抽象class/接口是需要你提供自己的合约实现的合约。例如,您正在编写一个可以写入文件、数据库等的日志记录库。考虑一下您将如何强制任何人实现持久保存到底层 io 的功能。为了实现这一点,您可以让您的代码与您的接口/抽象 class 的实例一起工作。
现在这两者之间的区别就像接口没有实现一样简单。好吧,直到 Java 8,但没关系,这不是 ATM 需要担心的事情。
您的摘要 class 可以实现某些方法。例如,如果您的写入尝试没有成功,请重试。但是实际的写操作只会存在于实现它的那一个中。界面不行。
抽象classes 在单个程序员项目上没有多大意义。您可以将它们视为继承自 class 实现某些 method/s.
的程序员所获得的承诺
我正在学习面向对象编程的概念。其中之一是抽象。我知道任何包含抽象方法的 class 也应该是抽象的,并且抽象 class 不能被实例化。要使用抽象 class 我必须从另一个继承它。
到目前为止一切顺利。让我们看下面的代码:
public abstract class Games {
public abstract void start();
public void stop(){
System.out.println("Stopping game in abstract class");
}
}
class GameA extends Games{
public void start(){
System.out.println("Starting Game A");
}
}
class GameB extends Games{
public void start(){
System.out.println("Starting Game B");
}
}
然后我们有一个 class 和 main
方法:
public class AbstractExample {
public static void main(String[] args){
Games A = new GameA();
Games B = new GameB();
A.start();
A.stop();
B.start();
B.stop();
}
}
但我本可以在 class Games
中写下以下内容:
public void start(){
System.out.print("");
}
那么它就不必是abstract
,输出是一样的,我什至可以实例化Games
class。那么制作抽象方法和classes的关键是什么?
对,所以在某种意义上抽象class/接口是需要你提供自己的合约实现的合约。例如,您正在编写一个可以写入文件、数据库等的日志记录库。考虑一下您将如何强制任何人实现持久保存到底层 io 的功能。为了实现这一点,您可以让您的代码与您的接口/抽象 class 的实例一起工作。 现在这两者之间的区别就像接口没有实现一样简单。好吧,直到 Java 8,但没关系,这不是 ATM 需要担心的事情。 您的摘要 class 可以实现某些方法。例如,如果您的写入尝试没有成功,请重试。但是实际的写操作只会存在于实现它的那一个中。界面不行。
抽象classes 在单个程序员项目上没有多大意义。您可以将它们视为继承自 class 实现某些 method/s.
的程序员所获得的承诺