首页 > 其他分享 >Angular Component Class 成员属性默认的访问权限控制

Angular Component Class 成员属性默认的访问权限控制

时间:2023-07-21 16:12:30浏览次数:29  
标签:成员 修饰符 Component 默认 Class 访问 Angular public

在Angular中,如果在一个Component Class的成员上没有明确使用访问修饰符(如private、public或protected),则默认的访问控制是public。

Public访问修饰符表示成员可以从任何地方进行访问,包括类内部、类外部以及派生类。当没有显式地指定访问修饰符时,TypeScript(Angular使用的基础语言)会默认将成员标记为public。

下面是一些关于默认访问控制的重要信息:

  1. 默认访问修饰符:如果在Angular中声明的类成员(属性或方法)没有指定访问修饰符,则它们将被默认设置为public。

例如,下面的代码片段展示了一个没有显式指定访问修饰符的Angular Component Class的示例:

@Component({
  selector: 'app-example',
  template: '<p>{{message}}</p>'
})
export class ExampleComponent {
  message: string; // 默认访问修饰符是public
  // ...
}

在上述示例中,message成员被默认设置为public访问修饰符,这意味着它可以从类内部和类外部进行访问。

  1. 类外部访问:如果一个成员具有public访问修饰符,它可以在类的实例上被访问,并且还可以通过该类的实例在类外部进行访问。
const example = new ExampleComponent();
example.message = 'Hello'; // 类外部可以访问public成员

在上述示例中,通过创建ExampleComponent的实例example,我们可以直接访问并设置message成员的值。

  1. 类内部访问:由于默认的访问控制是public,因此在类的内部,可以直接访问类的所有成员,包括那些没有显式指定访问修饰符的成员。
export class ExampleComponent {
  message: string; // 默认访问修饰符是public

  constructor() {
    this.message = 'Hello'; // 类内部可以访问public成员
  }
}

在上述示例中,message成员可以在类的构造函数中直接访问和设置其值。

在 Angular 中,如果不为类成员(例如属性或方法)指定访问修饰符(public、private 或 protected),那么它的默认修饰符就是 public。这是 TypeScript 的规则,Angular 也遵循了这个规则。

public 是 TypeScript 中最基本的访问修饰符,它表示该类成员是公开的,可以在任何地方访问。在实际应用中,可能会看到许多类成员没有明确的访问修饰符,这就说明它们是公开的,可以在类的内部、子类以及类的外部进行访问。

然而,虽然默认的访问控制是 public,但在编写代码时,最佳实践是始终明确指定访问修饰符,这样可以清晰地表明你的意图,让其他开发者更容易理解你的代码。

在 Angular 中,访问修饰符的使用还有更深入的含义。例如,当在类成员前添加 private 或 protected 修饰符时,这表示该类成员只能在当前类或子类中访问,而不能在类的外部访问。这有助于封装和隐藏内部实现细节,提高代码的可维护性。

另外,Angular 的模板并不遵守 TypeScript 的访问控制规则,即使将某个类成员标记为 private 或 protected,它仍然可以在该类的模板中访问。但是,这并不意味着开发人员应该在模板中访问 private 或 protected 成员。这仍然是一种破坏封装的行为,应该尽量避免。

在 Angular 的组件类中,通常有一些特殊的类成员,如生命周期钩子方法(如 ngOnInit、ngOnChanges 等)。这些方法通常没有访问修饰符,因为它们是由 Angular 框架调用的,不应该被外部代码直接访问。

总结

在 Angular 中,如果一个 Component Class 里的成员没有加 private 修饰,则默认的访问控制是 public,即该成员在任何地方都可以被访问。然而,为了代码的清晰和可维护性,应该始终为类成员指定访问修饰符,明确表明其访问权限。

同时,需要注意的是,Angular 的模板不遵守 TypeScript 的访问控制规则,但仍然应该避免在模板中访问 private 或 protected 成员。

标签:成员,修饰符,Component,默认,Class,访问,Angular,public
From: https://www.cnblogs.com/sap-jerry/p/17571694.html

相关文章

  • Classical Management: emphasized rationality and making organizations and worker
    Classicalapproach:Firststudiesofmanagement,whichemphasized:rationalitymakingorganizationsandworkersasefficientaspossibleMaxWeber’sBureaucracy(OrganationalMachine)wasanattempttoformulatetheBureaucracyanidealprototypefororg......
  • SLF4J: Class path contains multiple SLF4J bindings报错,logback-classic.jar与slf4j
    1.问题:控制台一直报错: 1SLF4J:ClasspathcontainsmultipleSLF4Jbindings.2SLF4J:Foundbindingin[jar:file:/logback-classic/1.1.11/logback-classic-1.1.11.jar!/org/slf4j/impl/StaticLoggerBinder.class]3SLF4J:Foundbindingin[jar:file:/slf4j/slf4j-log......
  • 对这段代码class OrderView(GenericViewSet): serializer_class = PaySerializer
    classOrderView(GenericViewSet):serializer_class=PaySerializerqueryset=Order.objects.all()OrderView继承自GenericViewSet类,GenericViewSet是DRF提供的一个通用的视图集类,它集成了常见的CRUD(创建、检索、更新、删除)操作以及其他常用操作。serial......
  • Kubernetes 集群配置 StorageClass
    Kubernetes集群配置StorageClass概述在Kubernetes集群中配置StorageClass是为了为应用程序提供动态存储卷的一种方式。通过配置StorageClass,你可以为应用程序提供不同的存储选项,例如不同类型的云存储或本地存储。以下是配置StorageClass的步骤:步骤步骤描述步......
  • CF1285F Classical?
    根据唯一分解定理,令\(x=p_1^{q_1}p_2^{q_2}\cdotsp_m^{q_m},y=p_1^{k_1}p_2^{k_2}\cdotsp_m^{k_m}\),则\(\text{lcm}(x,y)=p_1^{\max(q_1,k_1)}p_2^{\max(q_2,k_2)}\cdotsp_m^{\max(q_m,k_m)}\)。那么一定存在\(i\midx,j\midy\),使得\(\text{gcd}(i,j)=1\)且\(\te......
  • idea不能new java class
    如何实现“idea不能newjavaclass”作为一名经验丰富的开发者,我将向你介绍如何在idea中实现“不能newjavaclass”的功能。首先,让我们了解一下整个过程的步骤。步骤概述步骤动作创建新的插件项目使用Maven或Gradle创建一个新的插件项目定义自定义Annotation创建......
  • Java-Day-34( Class 类特性 + Class 类常用方法 + Class 对象的获取方法 + 具有 Class
    Java-Day-34Class类特性Class也是类,因此也继承Object类Class类对象不是new出来的,而是系统创建的通过类加载器ClassLoader类中的的loadClass方法对于某个类的Class类对象,在内存中只有一份不管是传统方法还是反射方法,一个类只会进一次ClassLoad类的......
  • Visual Components 3D模拟仿真软件 衡祖仿真
    VisualComponents是一款数字规划工具,涵盖营销、规划、到生产的整合平台。无论从制程规划、生产到营销都能够整合在单一平台上作业,有助于内部的技术沟通及外部营销推广。除此之外,VC软件整合了物流及智能机器人模拟功能,帮助企业在研发早期即可进行产能确认,减少不必要的成本支出和......
  • 解决ValueError: Tokenizer class LLaMATokenizer does not exist or is not currentl
    ##问题:loadLLaMA7b的weights的时候报错:ValueError:TokenizerclassLLaMATokenizerdoesnotexistorisnotcurrentlyimported.##出现原因:新版transformers里面llama的tokenizer命名为LlamaTokenizer但是旧的模型里面的tokenizer叫LLaMATokenizer##解决方案:改动t......
  • 首页 idea反编译class文件成为Java文件
    首页idea反编译class文件成为Java文件在开发过程中,我们经常会遇到需要查看其他人编写的Java类的情况。但是,有时候我们只能获取到编译好的class文件,而无法获得源代码。这个时候,如果我们能够将class文件反编译成Java文件,就能更方便地理解和分析代码了。本文将介绍如何使用IntelliJ......