我被问到一个问题.它是以下内容:
抽象类的API文档会告诉您方法是否是抽象的.什么时候以及为什么需要知道这一点?
任何帮助,将不胜感激.
晚上好,
我在EJB Timer项目上遇到问题,我不知道如何解决它.
我的项目中有一些方法,除了"CargaC"之外它们都运行良好当我调用它时我得到一个msg错误:
我的代码:
public void CargaC() {
Connection db2 = null;
DadosCDao dadosCDao = new DadosCDao();
try{
if(db2 == null || db2.isClosed()){
if((db2==null)||(db2.isClosed())){
db2 = new Dao().conexaoDb23();
if(!db2.isValid(5)){
db2 = new Dao().conexaoDb2K();
if(!db2.isValid(5)){
db2 = new Dao().conexaoDb2R();
}
}
}
ArrayList<DadosC> lista = dadosCDao.cargaDadosDb2(db2);
if(!lista.isEmpty()){
verificaDados(lista);
}
}
db2.close();
}catch(SQLException e){
System.out.println("Projeto PrjX, classe CargaDadosC, método cargaC, erro: "+e.getMessage());
}
}
Run Code Online (Sandbox Code Playgroud)
错误消息:
12:10:18,147 INFO [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-5) JBAS010404: Deploying non-JDBC-compliant driver class org.postgresql.Driver (version 9.3)
12:10:18,168 …Run Code Online (Sandbox Code Playgroud) 我以前做过这件事 - 只是记不住诀窍.
如果我有一个抽象类:
公共抽象类Post
还有一组派生类:
公共课照片:Post
我想强制派生类实现一个名为Validate()的方法,但同时在Post级别提供核心验证.
我可以创建一个方法:公共抽象void验证()在后,这将迫使派生类来实现的方法,但后来我如何执行后(基地)验证?
最终的结果是我希望能够做到这一点:
public class BLL
{
public void AddPost(Post post)
{
post.Validate(); // includes "Post" validation, any deriving validation.
repository.Add(post);
}
}
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
我正在查看游戏中的一些代码,我遇到了一些我以前没见过的东西,我真的不知道最近发生了什么.
public abstract class Entity
{
public Entity(World world)
{
// irrelevent code
entityInit();
}
protected abstract void entityInit();
}
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?它呼吁时会发生什么entityInit()?
老实说,我不知道为什么这会让我失望.
public abstract class BankAccount
{
private string accNo;
private double balance;
public abstract void MakeWithdrawal(string acc);
public abstract void MakeDeposit(double dep);
Run Code Online (Sandbox Code Playgroud)
上面的代码抛出了这个错误:
BankAccount.MakeWithdrawal()'是抽象的,但它包含在非抽象类'Worksheet7.BankAccount'中
即使我将该类声明为抽象类.我在这里缺少什么东西,或者在视觉工作室中缺少一些我不知道的东西?
我是Java新手(现在读书4个月了).所以我的问题可能看起来太简单了.我的理解是,抽象方法没有正文,也无法提供实现
那么这是如何工作的呢?
public abstract void fillRect (int x, int y, with, height);
Run Code Online (Sandbox Code Playgroud)
我没有清楚地指出这个问题.我们有抽象的方法.如果我不提供正文,只是参数,为什么它会绘制一个矩形.
例如
public void paint (Graphics g) {
g.fillRect (5, 5, 30, 30);
}
Run Code Online (Sandbox Code Playgroud) 我正在处理一个大型代码库,它在这些类上有很多类和很多抽象方法.我对以下情况下人们对我应该做些什么的看法很感兴趣.
如果我有一个带有抽象方法的Parent-A类.只有2个孩子.如果Child-B实现了AbstractMethodA但Child-B没有实现,因为它不适用.
我是不是该
编辑:谢谢你的所有答案.它证实了我的怀疑,这不应该发生.经过进一步调查后发现这些方法根本没有使用,所以我完全删除了它们.
也许这首先是糟糕的设计,但我有一个抽象的基类,它有一个方法 validate
public abstract class abClass{
string str1;
string str2;
public virtual bool validate(){...};
}
Run Code Online (Sandbox Code Playgroud)
我知道每一个派生类中都会有需要验证的属性,但我不希望有复制粘贴验证的str1和str2每个抽象方法.
我想确保未来的开发人员(包括我自己)会记得包含并填写验证方法.从我所看到的,没有办法给出一个抽象方法定义,或强制虚拟方法被覆盖.
到目前为止,我所听到的就是"你应该让开发者选择他/她想做的事情." 这对我来说不够好,它反对制衡,以帮助你不犯错误.我不介意他们是否积极选择没有任何实现代码,但如果他们忘记了,那么稍后在未验证派生字段时会引起头疼.
对此问题的任何建议?
我想要一个抽象的类,有一个抽象的方法,比方说abstract void compare().但它所采用的参数应根据不同子类中的不同实现而变化.我想知道这样做的正确方法是什么?
我不能通过在抽象类本身中编写它的不同签名来重载它,因为如果我这样做,它的任何子类都需要实现所有版本,这不是我想要的.谢谢.
java inheritance abstract-class overloading abstract-methods
在超类中,我有:
abstract someMethod() throws someException;
Run Code Online (Sandbox Code Playgroud)
在子类中,我有:
someMethod(){/*do something*/}
Run Code Online (Sandbox Code Playgroud)
无需throws someException声明就可以这样做吗?是不是该throws someException声明是有默认不明确增加了吗?
abstract-methods ×10
java ×6
c# ×3
abstract ×2
.net ×1
delphi ×1
exception ×1
inheritance ×1
jdbc ×1
oop ×1
overloading ×1
validation ×1