網站首頁 編程語言 正文
目錄
一、類
二、多態(一個對象多種形態)
三、抽象類
四、訪問修飾符
readonly修飾符
一、類
javascript關于類的側重點主要是原型對象
面向對象類-->類是創建對象的模板,一個類可以創建多個對象
class Person{
?? ?foo(){}
?? ?bar(){}
}
let p1=new Person()
p1.var()
p1.foo()
二、多態(一個對象多種形態)
多態存在的三個條件:
(1)存在繼承
(2)子類實現對父類方法的重寫
(3)父類類型的引用指向子類對象
繼承使用extends關鍵字;
重寫:如果子類方法與父類一致,子類會對父類的方法進行重寫;
父類類型的引用指向子類對象,通過該引用可以訪問到父類的特性(屬性、方法),但是無法訪問子類得特性;如果子類對父類的特性進行重寫,通過該引用調用的重寫特性依舊為子類特性。
class Person{
name:string;
age:number;
weight?:number;
say():void{
console.log('hello person');
}
}
// 子類繼承了父類
class Student extends Person{
stuNo:string;
// 子類對父類方法進行重寫
say():void{
console.log('hello student');
}
// 子類還可以有自己的方法
study():void{
console.log('好好學習,天天向上');
}
}
// 父類類型的引用指向子類對象 => 多態
let s1:Person=new Student();
// s1可以調用父類對象的屬性、方法
s1.age=12;
s1.name='terry';
// 子類對父類方法重寫,會調用子類的方法
s1.say(); //hello student
// 實例s1無法調用子類對象的屬性、方法
// s1.stuNo='1002';
// s1.study()
//打印s1可以看出 父類類型的引用指向子類對象,因為前面顯示的是Student
console.log(s1);//Student { age: 12, name: 'terry' }
三、抽象類
什么是抽象類? ? 一般情況下,抽象類無法創建對象,抽象類中可以存在抽象方法(也可以不存在抽象方法),抽象方法指的是沒有方法體的方法。
抽象類中可以存在抽象方法和非抽象方法,一個類中具有抽象方法,那么該類一定是抽象類 ?。
抽象類存在的意義?為了讓其它類繼承抽象類,并強制要求子類實現抽象方法。
子類繼承抽象類的兩種方式:
1、子類必須實現抽象類中的方法
2、子類成為抽象類
// 使用abstract關鍵字
abstract class Person {
//抽象方法(沒有方法體{})
abstract study(): void;
log(): void {
console.log('我不是抽象方法');
};
}
// 子類繼承抽象類 兩種方式:
// 1.實現抽象類中方法study
class Student extends Person {
study(): void {
console.log('好好學習,天天向上');
}
// 還可以有自己的方法
cook(): void {
console.log('學會了做飯');
}
}
let s3: Student = new Student();
s3.study();//好好學習,天天向上
s3.cook();//學會了做飯
s3.log();//我不是抽象方法
// 2.自身也成為抽象類
// abstract class Student2 extends Person1{
// }
四、訪問修飾符
public 表示共有的,可以在當前類、子類、其他類進行訪問
protected 表示保護的,可以在當前類、子類進行訪問
private?表示私有的,只能在當前類中訪問
readonly修飾符
你可以使用 readonly
關鍵字將屬性設置為只讀的。 只讀屬性必須在聲明時或構造函數里被初始化。
class Person {
public name: string;
protected age: number;
private weight: number;
readonly gender: string;
constructor(name, age, weight, gender) {
this.name = name;
this.age = age;
this.weight = weight;
this.gender = gender;
}
protected foo() {
console.log(this.name);
console.log(this.age);
console.log(this.weight);
}
}
class Student extends Person {
constructor(name, age, weight, gender) {
super(name, age, weight, gender);
}
bar() {
// super 是父類的引用
super.foo()
}
};
let s1: Student = new Student('zhangsan', 12, 40, 'male');
console.log(s1.name);//zhangsan
// gender是只讀屬性,不可修改
// s1.gender='female';
s1.bar();//zhangsan 12 40
原文鏈接:https://blog.csdn.net/lq313131/article/details/126978343
- 上一篇:沒有了
- 下一篇:沒有了
相關推薦
- 2022-07-16 uniCloud云開發獲取小程序用戶openid
- 2022-11-13 ASP.NET?MVC使用Session會話保持表單狀態_實用技巧
- 2022-11-02 Python封裝解構以及丟棄變量_python
- 2022-11-30 CTF?AWD入門學習手冊_安全相關
- 2022-04-06 一篇文章帶你深入學習Python函數_python
- 2022-06-13 安裝Docker配置阿里云鏡像加速(圖文教程)_docker
- 2022-09-17 Golang中的包及包管理工具go?mod詳解_Golang
- 2022-06-26 Qt中QtWebEngine加載本地網頁跨域問題的總結_C 語言
- 欄目分類
-
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支