抽象的(abstract)方法是否可同时是静态的(static), 是否可同时是本地方法 (native),是否可同时被 synchronized

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wn5231/article/details/88558399

抽象的(abstract)方法是否可同时是静态的(static), 是否可同时是本地方法(native),是否可同时被 synchronized

都不能。
抽象方法需要子类重写,而静态的方法是无法被重写的,因此二者是矛盾的。
本地方法是由本地代码(如 C 代码)实现的方法,而抽象方法是没有实现的,也是矛盾的。
synchronized 和方法的实现细节有关,抽象方法不涉及实现细节(抽象方法没有方法体),因此也是相互矛盾的。

为什么静态方法不能被重写:

静态方法可以被继承,但是,不能被覆盖,即重写。如果父类中定义的静态方法在子类中被重新定义,那么在父类中定义的静态方法将被隐藏。可以使用语法:父类名.静态方法调用隐藏的静态方法。
如果父类中含有一个静态方法,且在子类中也含有一个返回类型、方法名、参数列表均与之相同的静态方法,那么该子类实际上只是将父类中的该同名方法进行了隐藏,而非重写。换句话说,父类和子类中含有的其实是两个没有关系的方法,它们的行为也并不具有多态性
因此,通过一个指向子类对象的父类引用变量来调用父子同名的静态方法时,只会调用父类的静态方法。

本地方法
一个Native Method就是一个java调用非java代码的接口。一个Native Method是这样一个java的方法:该方法的实现由非java语言实现。有些时候java语言不能实现某些功能,就需要调用其他语言的方法,即本地方法。
使用本地方法是有开销的,谨慎使用。

展开阅读全文

ado中是否可同时开多个记录集

03-27

_RecordsetPtr m_pRecordset;rn m_pRecordset.CreateInstance(__uuidof(Recordset));rn current=KeyWordHead;rn _variant_t RecordsAffected;rn _variant_t vword,vfrequence;rn while(current!=NULL)rn rn // list recyclern current=current->next;rn char tempfre[10];rn char tempfile[1000];rn CString tempstr=current->word;rn _itoa(current->frequence,tempfre,10);rn _itoa(m_allnum,tempfile,10);//rn // 写入各字段值rn m_pRecordset->Open("SELECT * FROM category0",theApp.m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText); rn m_pRecordset->AddNew();rn m_pRecordset->PutCollect("frequence", _variant_t(tempfre));rn m_pRecordset->PutCollect("studyfile", _variant_t(tempfile));rn m_pRecordset->PutCollect("word", _variant_t(tempstr));rn m_pRecordset->Update();rn m_pRecordset->Close();rn _ConnectionPtr m_pConn;rn _RecordsetPtr m_tempSet;rn m_pConn.CreateInstance(_uuidof(Connection)); rn m_tempSet.CreateInstance(__uuidof(Recordset));rn CString kkk="";rn kkk.Format("SELECT word FROM classtable WHERE word=\'%s\'",tempstr);rn // 查询DemoTable表中所有字段 , 获取库接库的IDispatch指针_variant_t((IDispatch*)m_pConnection,true)rn BSTR bstrRepositorySQL=kkk.AllocSysString();rn m_tempSet->Open(bstrRepositorySQL,theApp.m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);rn~~~~~~~~~~~~~~~~~~~~~~~~~~~出错位置~~~~~~~~~~~~~~~~~~~~~~~~~~~~rnunhandled exception in xxx.exe,rnFirst-chance exception in xxx.exe (KERNEL32.DLL):rn原来我用的是同一个theApp.m_pConnection,后来改用两个连接,但无论那种都不行,请帮忙!! 论坛

没有更多推荐了,返回首页