如果我有一个超类,它应该能够在一个新实例上设置一些初始属性,那么为什么子类的成员似乎要覆盖超类的构造函数呢?
class Base {
constructor(fields) {
Object.assign(this, fields)
}
}
class Foo extends Base {
time = 0;
// calling super seems to make no difference
// constructor(...args) {
// super(...args)
// }
}
const foo = new Foo({
我有两个类Entity和Account
abstract class Entity(
var id: String? = null,
var created: Date? = Date()) {
constructor(entity: Entity?) : this() {
fromEntity(entity)
}
fun fromEntity(entity: Entity?): Entity {
id = entity?.id
created = entity?.created
ret
调用super()构造函数应该是构造函数的第一行吗?如果是,那为什么?为什么我不能在构造函数调用之前做一些简单的有限计算,例如构造函数参数的计算?
我发现了一个内部类构造函数的情况,可以用闭包规范调用它:
class A {
class Inner1 {
Inner1() {
// do something
}
}
}
class B {
A a1 = new A();
A a2 = new A();
class Inner2 extends A.Inner1 {
Inner2
特征不能有构造函数参数。那么,如何才能编写具有非空构造函数的扩展类和抽象类呢?
abstract class HasConsArgs(val i: Int)
trait Test extends HasConsArgs
它会编译。但在尝试使用时;
new Test {}
你得到一个错误not enough arguments for constructor HasConsArgs: .....。为什么会出现这种情况,有可能让一个特性的实现者以某种方式调用这个构造函数呢?
class Impl(i: Int) extends Test //doesnt work
error: not enou
我有这个程序:
public class A
{
public A(){
System.out.println("I am in A");
}
public static void main(String args[]){
B a = new B("Test");
}
}
class B extends A
{
public B(){
System.out.println("I am in B");
}
public B(String s){
th
首先我有两个问题:我最近了解到在ES 6派生类中,如果不调用super(),则"this“不可用。我理解为什么要这样做,但我想知道从概念上讲,是哪段ES6编译代码使" this“不可用。我的意思是,如果我想在ES5中做同样的事情,让“这个”不可用,那该怎么做呢?
第二:为什么我们不能实例化下面的ES6原型方法呢?
class abc{
func(){}
}
var a = new abc()
var b = new a.func()
鉴于这是可行的-
function abc(){}
abc.prototype.func = function(){}
var a = ne
假设我在写一个包裹。我有以下继承层次结构,全部在我的包中:
public class Container {
public void size() {
System.out.println(10);
}
}
public final class Bucket extends Container {}
public final class Bag extends Container {}
public class Item {
Container container; // is aware of what container it's in
我有一个带有变量的类。当我在主类中实例化该类的对象时。我只能访问和修改方法、任何方法中的成员变量,而不能在它们之外访问和修改成员变量。为什么会这样呢?我被困住了,似乎在谷歌上找不到答案。
class SomeVariables{
String s;
int dontneed;
}
class MainClass{
SomeVariables vars= new SomeVariables();
vars.s = "why this doesnt work?. IDE says Uknown class 'vars.s'";
我在理解super()的概念时遇到了麻烦。Java Tutorials给出了这个示例:
public class Superclass {
public void printMethod() {
System.out.println("Printed in Superclass.");
}
}
public class Subclass extends Superclass {
// overrides printMethod in Superclass
public void printMethod() {
s
我想知道当有人在继承自抽象类的类的构造函数中调用java super()方法时会发生什么。正如我们所知,抽象类不能被实例化,但super调用抽象类的构造函数。 让我们举个例子。 public abstract class Figure { // cant be instantiated
private type firstAttribute;
private type secondAttribute;
public Figure(type firstAttribute, type secondAttribute) {
this.fisrtAttrib
我就是这样遇到这个问题的。我举一个例子:
package check;
public class Check {
int a,b;
Check (int i,int j) {
a = i;
b = j;
}
}
这很好。现在,我想通过扩展Check来创建一个子类。所以我写到:
class V extends Check {
}
我一写完它,Eclipse中就出现了一个十字架,点击它,我找到了一条消息:
implicit super constructor Check() is undefined for default constructor. Must def
class A(object):
def get_value(self):
return "foo"
class B(A):
def get_value(self):
value = super(B, self).get_value()
value + "bar"
return value
考虑到上面的类,当我想为B()类编写一个测试套件时,该如何模拟super()对A()的get_value()方法的调用呢?我想要的伪代码是:
class BTestCase(TestCas
C#规范声明:
抽象类允许(但不需要)包含抽象成员。
这允许我创建这样的类:
public abstract class A
{
public void Main()
{
// it's full of logic!
}
}
甚至更好:
public abstract class A
{
public virtual void Main() { }
}
public abstract class B : A
{
public override sealed void Main()
{
// it
我在学习Java,是个初学者.请帮我找出为什么这不管用..。
在下面的程序中,我的目标是从主方法调用基类方法,而不是在派生类方法中使用超级关键字。
如代码所示,主方法中的((A)b).num工作得很好,并且输出了100,正如预期的那样,但是((A)b).disp()输出了B方法中的内容,而不是A的方法。
class A
{
int num=100;
public void disp()
{
System.out.println("Disp() of A:");
System.out.println(num);
}
}
cla
我有一个问题,为什么下面的代码执行它所做的。
class Account:
def __init__(self, id):
self.id = id
id = 800
id = self.id + id
acc = Account(123)
print(acc.id)
为什么这个代码会打印123而不是923呢?为什么id不能在类内工作?
那么,为什么我可以将父类转换为子类,而不能反之亦然呢?
当我将父类的对象设置为子类,反之亦然,为什么没有复制属性?
public class senior {
private int a = 6;
public int getA() {
return a;
}
public int x = 1;
}
class junior extends senior {
public junior() {
super();
}
public int x = 0;
}
public class runner {
我对OOP和Python非常陌生。我所知道的几乎所有的东西都是自学的,所以如果你能提供给我阅读的链接,我会很感激,因为我不知道我应该寻求什么确切的术语来澄清我的疑虑。
到目前为止,这是我的代码:
class Point(object):
x = 2
y = 3
def __init__(self, x, y):
self.x_a = x
self.y_b = y
class RectPoint(Point):
def __init__(self, x, y):
self.x_1 = x
sel
我已经阅读了定义并得到了它--在一个无损的连接之后,您应该不会丢失任何信息。但是为什么这个具体的例子适用于第三个分解解决方案呢?此示例来自Elmasri和Navathe的数据库系统基础。
我们有一张名为“带栏的教学”的桌子--学生、教师和课程。它是第三范式,我们正试图使它成为BCNF (Boyce Codd范式)。
教书(学生、课程、讲师)
STUDENT COURSE INSTRUCTOR
Nathan Database Mark
Smith Database Navathe
Smith Op Sys Ammar
Smith Theory Sch
如果构造函数没有在Java中继承,为什么我会得到编译错误(默认构造函数不可见的隐式超级构造函数A() )。必须定义显式构造函数)?
class A {
private A() {
}
}
public class B extends A {
}
UPD。我知道在隐式B构造函数中调用super()。但是我不明白为什么它不能用super()访问私有构造函数。所以,如果我们只有私有构造函数,那么类事实上就是final。