Java中向抽象基类添加成员的影响

Java中向抽象基类添加成员的影响,java,deployment,abstract-class,Java,Deployment,Abstract Class,我是Java的新手,所以下面的问题看起来很简单 背景: 情景1: 我在Java中有一个抽象基类C1,带有sayN接口成员函数。 客户端将此类用作包,并实现客户端业务逻辑。Client1 因此Client1使用包Package1(包含C1类定义)就可以使用jarJAR1 情景2: 我想了解向类C1添加新成员函数的影响。带有附加成员的类C1(比如我们称之为C2)包含N+M成员函数(假定客户端不使用)具有jar文件JAR2 现在可以存在多种部署组合- Client1(基于Package1构建)在JAR

我是Java的新手,所以下面的问题看起来很简单

背景:

情景1:
我在Java中有一个抽象基类
C1
,带有say
N
接口成员函数。
客户端将此类用作包,并实现客户端业务逻辑。
Client1
因此
Client1
使用包
Package1
(包含
C1
类定义)就可以使用jar
JAR1

情景2:
我想了解向类
C1
添加新成员函数的影响。带有附加成员的类
C1
(比如我们称之为
C2
)包含
N+M
成员函数(假定客户端不使用)具有jar文件
JAR2

现在可以存在多种部署组合-
Client1
(基于
Package1
构建)在
JAR1

Client1
(基于
Package1
)运行在
JAR2

<>我基本上是从C++背景出发,当一个新的接口添加到被暴露给客户端的类时,将详细研究VPTR的概念及其影响。p> 问题:
A.在JAVA的情况下,这些扩展需要如何分析和实现(同一方面的任何材料都非常有用)。

B如果这在java中是一个“安全选项”,那么在这种情况下,我们还需要处理哪些其他注意事项

如果我理解正确,您的问题是关于修改接口的含义

interface TurnsAllWays extends Turns
{
   public void turnsBack();
}
实现一个接口可以使一个类在其承诺提供的行为方面变得更加正式。接口在类和外部世界之间形成契约,编译器在构建时强制执行该契约

interface Turns
{
   public void turnLeft();
   public void turnRight();
}

class Device implements Turns
{
   public void turnLeft()
   {
     //implementation
   }
   public void turnRight()
   {
     //implementation
   }
}
现在,如果我们需要修改接口。我们要做的是扩展接口

interface TurnsAllWays extends Turns
{
   public void turnsBack();
}

因此,现在设备可以按原样继续运行,或者在必要时进行修改。

要回答这两个问题:

a) 本文描述JVM如何加载和链接类文件:


b) 只要方法/公共成员的签名没有改变,调用代码仍然有效。在加载类时更改这些将导致运行时异常。

谢谢您的输入。但是,如果我在现有界面本身中添加新的
合同
(我知道这表明初始设计很差),会怎么样?如果是这样,会有什么影响?除非重新编译文件,否则不会有任何问题。如果您编译,它将抛出编译时错误<代码>设备不是抽象的,不会依次重写抽象方法turnsBack()