别超别人的!!!
请用通俗易懂的语言。。
谢谢
private只有内部可以看到,并且只能内部调用。
而Protected虽然可以被外界看到,但外界却不能调用。
按字面意思,前者是我私有的,在口袋里放着,比如说一颗很大的钻石,照耀于世当然很危险;后者是受保护的,虽然你看见我手里拿着个手机,你却不敢抢去用。因为那时不合理法的,并且被看到了也没什么。
差不多就这个意思了。
选择用那个,你就看看这个东西是钻石还是手机。
而Protected虽然可以被外界看到,但外界却不能调用。
按字面意思,前者是我私有的,在口袋里放着,比如说一颗很大的钻石,照耀于世当然很危险;后者是受保护的,虽然你看见我手里拿着个手机,你却不敢抢去用。因为那时不合理法的,并且被看到了也没什么。
差不多就这个意思了。
选择用那个,你就看看这个东西是钻石还是手机。
温馨提示:答案为网友推荐,仅供参考
第1个回答 2008-03-14
private 是完全私有的,只有当前类中的成员能访问到.
protected 是受保护的,只有当前类的成员与继承该类的类才能访问.本回答被提问者采纳
protected 是受保护的,只有当前类的成员与继承该类的类才能访问.本回答被提问者采纳
第2个回答 2008-03-14
private和protect的共同点,外部都不可以访问。
private只有在类自己里面可以调用,在外部和子类都不能调用,子类也不能继承父类的private的属性和方法。
protect的属性和方法都可以被子类所继承。
private只有在类自己里面可以调用,在外部和子类都不能调用,子类也不能继承父类的private的属性和方法。
protect的属性和方法都可以被子类所继承。
第3个回答 2008-03-14
using System;
using System.Collections.Generic;
using System.Text;
namespace PrivateVSProtected
{
class A
{
private string strPrivate = "Private";
public A()
{
}
public void AOutPut()
{
/* strPrivate used here is ok*/
System.Console.WriteLine(this.strPrivate);
}
}
class B
{
protected string strProtected = "Protected";
public B()
{
}
public void BOutPut()
{
/*strProtected used here is ok*/
System.Console.WriteLine(this.strProtected);
}
}
class C : B
{
public C()
{
}
public void COutPut()
{
/* althought strProtected is not declare here,
* it is inherated from B,
* so this.strProtected is ok
*/
System.Console.WriteLine(this.strProtected);
}
}
class Program
{
static void Main(string[] args)
{
A a = new A();
a.AOutPut(); /*ok, function AOutPut() is public*/
// a.strPrivate; /*illegal, strPrivate is private, not accessable*/
B b = new B();
b.BOutPut(); /*ok, function BOutPut() is public*/
// b.strProtected; /*illegal, strProtected is protected, not accessable*/
C c = new C();
c.COutPut(); /*ok, function COutPut() is public*/
}
}
}
using System.Collections.Generic;
using System.Text;
namespace PrivateVSProtected
{
class A
{
private string strPrivate = "Private";
public A()
{
}
public void AOutPut()
{
/* strPrivate used here is ok*/
System.Console.WriteLine(this.strPrivate);
}
}
class B
{
protected string strProtected = "Protected";
public B()
{
}
public void BOutPut()
{
/*strProtected used here is ok*/
System.Console.WriteLine(this.strProtected);
}
}
class C : B
{
public C()
{
}
public void COutPut()
{
/* althought strProtected is not declare here,
* it is inherated from B,
* so this.strProtected is ok
*/
System.Console.WriteLine(this.strProtected);
}
}
class Program
{
static void Main(string[] args)
{
A a = new A();
a.AOutPut(); /*ok, function AOutPut() is public*/
// a.strPrivate; /*illegal, strPrivate is private, not accessable*/
B b = new B();
b.BOutPut(); /*ok, function BOutPut() is public*/
// b.strProtected; /*illegal, strProtected is protected, not accessable*/
C c = new C();
c.COutPut(); /*ok, function COutPut() is public*/
}
}
}
第4个回答 2008-03-14
这么说吧,我们知道类的继承可以理解为:在子类的对象中实际上隐藏了一个父类的对象,并且在构造子类之前回提前构造这个影藏的父类对象。
如果是在父类中用了private 的成员private int x ;
那么在子类对象中虽然隐藏了一个父类对象,但不能访问这个隐藏对象的成员x
如果是 protected 那么就可以访问x
如果是在父类中用了private 的成员private int x ;
那么在子类对象中虽然隐藏了一个父类对象,但不能访问这个隐藏对象的成员x
如果是 protected 那么就可以访问x