什么是protected?
时间: 2024-05-23 21:07:48 浏览: 193
在面向对象编程中,`protected`是一种访问控制修饰符,用于指定类的成员函数和变量的访问权限。使用`protected`修饰的成员变量或函数可以被该类的成员函数和其子类的成员函数访问,但不能被类的外部访问。
在类的继承中,子类可以访问父类的`protected`成员,而不能访问父类的`private`成员。这样,可以通过`protected`实现类的封装性,同时又允许子类直接访问父类的一部分成员。
举个例子,假设有一个名为`Person`的基类,其中有一个`protected`成员变量`age`,表示年龄。那么,这个成员变量可以在`Person`类内部和其子类中被访问,但不能在`Person`类外部被访问。如果有一个子类`Student`继承自`Person`,那么`Student`类可以直接访问父类中的`age`成员变量。
相关问题
public、private、protected、internal、protected internal有什么区别?
这些是C#中的访问修饰符,用于控制类成员的可见性和访问权限。它们的区别如下:
public:公共访问修饰符,表示该成员可以被任何类、结构体、方法和程序集中的其他代码访问。
private:私有访问修饰符,表示该成员只能被当前类或结构体中的代码访问。
protected:受保护的访问修饰符,表示该成员可以被当前类或结构体中的代码以及派生类中的代码访问。
internal:内部访问修饰符,表示该成员只能被同一程序集中的其他代码访问。
protected internal:受保护的内部访问修饰符,表示该成员可以被当前类或结构体中的代码、派生类中的代码以及同一程序集中的其他代码访问。
typescript 的类中 protected 和 prevate 有什么区别?
在 TypeScript 中,`protected` 和 `private` 关键字都用来描述类中的成员访问权限。
`private` 标记的成员只能在该类内部访问,而不能在类的外部访问。而 `protected` 标记的成员可以在该类内部以及该类的子类中访问,但是不能在类的外部访问。
例如,我们有如下代码:
```typescript
class Person {
private name: string;
protected age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
}
class Student extends Person {
constructor(name: string, age: number) {
super(name, age);
console.log(this.name); // Error: 'name' is private and only accessible within class 'Person'.
console.log(this.age); // OK
}
}
```
在上面的代码中,`Person` 类中的 `name` 成员被标记为 `private`,因此它只能在 `Person` 类内部访问,而不能在 `Student` 类中访问。而 `age` 成员被标记为 `protected`,因此它可以在 `Person` 类及其子类中访问,因此在 `Student` 类中可以访问它。
总的来说,`private` 和 `protected` 的区别在于是否可以在子类中访问,如果需要在子类中访问,就应该使用 `protected`。
阅读全文