2017-03-03 105 views
-4

当我试图通过在派生类方法中创建一个对象来实例化基类成员时,应该通过c.Id访问它,而不是获取错误通过在派生类中创建对象来实例化基类成员方法

public class RetailCust : Customer 
{ 
    public void Print() 
    { 
     Customer c = new Customer(); 
     c.id=102 //getting an error 
    } 
} 

public class Customer 
{ 
    protected int id = 100; 
} 
+1

你为什么要创建一个'Customer'的新实例? 'RetailCust'对'id'具有正常访问权限 – UnholySheep

+1

'c.id = 102'应该是'this.id = 102;'或'base.id = 102;' – Igor

+0

“发生错误”不会告诉我们任何事情。请发布错误堆栈。 – JuanR

回答

1

从该类中派生可让您访问父项的protected成员,true。但是创建父类的实例,并不授予您对该实例的成员privateprotected的访问权限。基本上,就像你能想象的任何其他课程一样。

1

我想你想的是:

public class RetailCust : Customer 
{ 
    public void Print() 
    { 
    this.id = 102; 
    } 
} 

没有必要实例化一个Customer对象中打印,因为它看起来就像你正在试图做的是什么设置当前RetailCust对象有一个ID为102?

编辑/更新: 之所以没有理由来实例化一个Customer对象,你是一个Customer对象(只是一个更具体的类型的RetailCust)。因此,只要使用thisbase(如果您覆盖它并想区分此和基础),请参阅Customer类的任何属性。

+0

'c.id'没有引用任何东西(也不会编译) – UnholySheep

+0

对不起,我把c改成了这个。这应该编译。 –

相关问题