我在使用某些Java时遇到问题,如何在Java中提供默认参数值?例如我在C ++中有这个
DVD(int i, string t, int y, string d="Unknown"): Items(i,t,y),director(d){}
在Java中,我尝试
public Dvd(int i, String t,int y, String d="Unknown"){
super(i,t,y);
director = d;
}
Run Code Online (Sandbox Code Playgroud)
无法建立。那么我该如何提供默认值呢?
在我的主要测试课程中,我尝试给出3个参数,分别为4,但这也失败了。我如何解决这个问题?
是否有任何语言允许同时继承两个或更多类?
我知道PHP和Java不允许这样做.我想其他语言也不允许这样做.但为什么?我认为它会非常有用.这里的代码(它不是任何语言的正确语法)解释了我的意思......
class X extends Y, Z {
}
Run Code Online (Sandbox Code Playgroud)
如果可能的话,X类将具有Y和Z具有的所有字段和方法.
我有一个原生的android应用程序,包含10个活动的大约20个类.
我想在每个Activity中重用一个函数定义.我有一个底栏,从任何活动点击它应该触发此功能.由于Java无法进行多重继承,如何将此功能复制到我想要的位置?
那么这在java中是允许的
ClassA extends ClassB implements InterfaceA
Run Code Online (Sandbox Code Playgroud)
并且
InterfaceA extends IntefaceB , InterfaceC
Run Code Online (Sandbox Code Playgroud)
好吧,如果这些不是多重继承那么它们是什么?
UPDATE
好吧,我碰巧以错误的方式说出了这个问题.我最初的问题是为什么java不支持多重继承.
我真正想知道的是:
如果一个接口可以扩展多个接口,或者一个类可以扩展一个类并实现一个接口,那么为什么那些不能被称为多重继承呢?
我试图理解Python多重继承,我有点理解MRO,super()和在MI中传递参数,但是当我阅读下面的例子时,它让我很困惑.
class Contact:
all_contacts = []
def __init__(self, name=None, email=None, **kwargs):
super().__init__(**kwargs)
self.name = name
self.email = email
self.all_contacts.append(self)
class AddressHolder:
def __init__(self, street=None, city=None, state=None, code=None, **kwargs):
super().__init__(**kwargs)
self.street = street
self.city = city
self.state = state
self.code = code
class Friend(Contact, AddressHolder):
def __init__(self, phone='', **kwargs):
super().__init__(**kwargs)
self.phone = phone
Run Code Online (Sandbox Code Playgroud)
现在我无法理解为什么在Contact和AddressHolder类中使用super().我的意思是当我们从父类继承但是Contact&AddressHolder都不从任何其他类继承时使用super().(从技术上讲,他们是继承自的object).这个例子让我对super()的正确使用感到困惑
在我的C++程序中,我有两个类(B1和B2),它们有自己的方法,但有1个("意外").例如:
B1类标题:
void height();
void size();
void enabled();
Run Code Online (Sandbox Code Playgroud)
B2级标题:
void width();
void length();
void enabled();
Run Code Online (Sandbox Code Playgroud)
现在我有一个继承自B1和B2的A类.由于enabled()多重继承后方法中存在"冲突",我该如何避免这种情况?有没有办法从继承中排除方法?例如,我可以enabled()从B1类中排除继承(我不能将其设置为私有,因为它是从B1派生的其他类中使用的).还有其他想法吗?
public class A
{
public void printA(){
System.out.println("A");
}
}
public class B extends A
{
public void printB(){
System.out.println("B");
}
}
public class C extends B
{
public void printC(){
System.out.println("C");
}
}
public class test {
public static void main(String[] args)
{
A a = new B();
a.printA(); // work
B b = (B) a;
b.printB(); // work
C c = (C) b;
c.printC(); // not work throw java.lang.ClassCastException
}
}
Run Code Online (Sandbox Code Playgroud)
我有三个A类和B类,C
C从B延伸,B从A延伸到A
为什么从A到B,而不是从B到C,尽管它们之间的关系如A和B,B是父的C那么JVM怎么工作?
比方说,有base_a.html,base_b.html,a.html,b.html,c.html.
a.html扩展base_a.html和b.html扩展base_b.html.
并且c.html必须延伸base_a.html和base_b.html.
如果您认为base_a.html包含回复功能并base_b.html包含搜索功能,则更容易理解这种情况.
我可以在Django模板中使用多重继承吗?
或者我是否必须使用include而不是extends?
所以我有一个以下问题.我有一个类,它是另外两个类的子类,它们都有位置.就像在这个例子中:
struct A
{
float x, y;
std::string name;
void move(float x, float y)
{
this->x += x;
this->y += y;
}
};
struct B
{
float x, y;
int rows, columns;
void move(float x, float y)
{
this->x += x;
this->y += y;
}
};
struct C : public A, public B
{
void move(float x, float y)
{
this->x += x; //generates error: "C::x is ambiguous
this->y += y; //generates error: "C::y is ambiguous
}
};
Run Code Online (Sandbox Code Playgroud)
在代码的后面,我将C类称为A类和B类,当我得到这个位置时,我遇到了问题.我可以以某种方式"组合"两个类的位置变量吗?如果没有,我可以同时更改两个类的位置,或者我必须这样做:
void …Run Code Online (Sandbox Code Playgroud) 我的一些UITextField是从TextFieldEffects的 KaedeTextField继承而来的
我想让这些文本字段具有来自另一个框架AKMaskField的掩码
怎么可能这样呢?如何使文本字段具有KaedeTextField的样式,但同时也具有AKMaskField的掩码?
是否可以使用协议和扩展在Swift中执行此操作?
inheritance ×4
java ×4
c++ ×2
android ×1
casting ×1
cocoapods ×1
code-reuse ×1
django ×1
downcast ×1
extends ×1
ios ×1
oop ×1
python ×1
python-3.x ×1
swift ×1
templates ×1
uitextfield ×1