クラス-2
getter setter
privateプロパティを持つクラスにインスタンスを作成します.
インスタンス전체
にはアクセスできますが、インスタンス속성
にはアクセスできません.class Person {
constructor(private name:string,private age : number) {}
}
const user1 = new Person("Tim",20);
console.log(user1); // { name: 'Tim', age: 20 }
console.log(user1.name); // 오류 'name' 속성은 private이며 'Person' 클래스 내에서만 액세스할 수 있습니다.
ゲストとゲストを使用すると、プライベートを維持しながらアクセスできます.get
-パラメータを持たない関数は、プログラムを読み込むときに役立ちますset
–propertyに値を書き込むときに呼び出される引数関数
getのname
とprivateのname
は重複しているので、一方を変える必要があります.
開発者は、デフォルトのプロパティ値を_이름
に変更しました.class Person {
constructor(private _name:string,private age : number) {} // _name
get name():string{
return this._name
}
}
const user1 = new Person("Tim",20);
const a = user1.name
console.log(a); // Tim
set Propertyに値を入力するために使用class Person {
constructor(private _name:string,private age : number) {}
set name(value:string){
this._name = value
}
}
const user1 = new Person("Tim",20);
user1.name= "Elon"
console.log(user1); // { _name: 'Elon', age: 20 }
readonly
readonlyを使用すると、publicでも外部に置き換えることはできません.class Person {
public readonly name:string = "Tim"
}
const user1 = new Person()
user1.name = "hello" // 오류
変更できるのは、宣言または作成者の内部のみです.class Person {
readonly name:string = "Tim"
constructor(name:string){
this.name = name;
}
}
const user1 = new Person("hello")
console.log(user1.name); // hello
Index Signatures in class
インタフェースIndex Signatures
と同様に、固定フォーマットなしで任意に追加する方法である.class Person{
[index:string]:'A'|'B'|'C'
}
const a = new Person
a.Alice = "A"
a.Mark = "B"
a.Tim = "C"
console.log(a); // { Alice: 'A', Mark: 'B', Tim: 'C' }
static
クラスのプロパティまたは関数を呼び出すには、new 연산자
を使用します.
インスタンスを作成したら、インスタンスからロードします.
ただし、static
を使用してクラス自体からロードすることができる.class Person {
static Country:string = "Korea"
}
console.log(Person.Country); // Korea
関数にも使用可能class Person {
static hello(){
console.log("안녕하세요");
}
}
Person.hello(); // 안녕하세요
プライベートでは外部からアクセスできませんが、内部では使用できます.class Person {
private static Country:string = "Korea"
static hello(){
console.log("안녕하세요 " + Person.Country);
}
}
Person.hello(); // 안녕하세요 korea
静的静的静的静的はインスタンス間で共有されます.
したがって、関数によるスタックプロパティの変更は、他のインスタンスにも影響します.class Person {
static Country:string = "Korea"
hello(){
console.log("안녕하세요 " + Person.Country);
}
change(){
Person.Country = "USA"
}
}
const user1 = new Person;
const user2 = new Person;
user2.hello(); // 안녕하세요 Korea
user1.change(); // user1 의 함수를 실행
user2.hello(); // 안녕하세요 USA
abstract
抽象クラスabstract
を作成するために使用されます.abstract class
が完全に実装されていない場合、サブクラスで正しく実装される.abstract class Person{
protected abstract name:string ;
abstract hello():void;
}
要約を添付しない属性と方法がある場合は、このセクションを実装する必要があります.
次に、継承を使用してサブクラスですべての操作を実行します.abstract class Person{
protected abstract name:string ;
abstract hello():void;
}
class User extends Person {
protected name: string="Tim" // protected 는 자식클래스에서 접근 가능
hello(): void {
console.log("안녕하세요 " + this.name);
}
}
const a = new User()
a.hello() // 안녕하세요 Tim
すなわち,抽象的に完璧に実施されていなくても,誤りは起こらない.
サブクラスの継承と利用のために作成されます.
Reference
この問題について(クラス-2), 我々は、より多くの情報をここで見つけました
https://velog.io/@hb-developer/200428
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
class Person {
constructor(private name:string,private age : number) {}
}
const user1 = new Person("Tim",20);
console.log(user1); // { name: 'Tim', age: 20 }
console.log(user1.name); // 오류 'name' 속성은 private이며 'Person' 클래스 내에서만 액세스할 수 있습니다.
class Person {
constructor(private _name:string,private age : number) {} // _name
get name():string{
return this._name
}
}
const user1 = new Person("Tim",20);
const a = user1.name
console.log(a); // Tim
class Person {
constructor(private _name:string,private age : number) {}
set name(value:string){
this._name = value
}
}
const user1 = new Person("Tim",20);
user1.name= "Elon"
console.log(user1); // { _name: 'Elon', age: 20 }
class Person {
public readonly name:string = "Tim"
}
const user1 = new Person()
user1.name = "hello" // 오류
class Person {
readonly name:string = "Tim"
constructor(name:string){
this.name = name;
}
}
const user1 = new Person("hello")
console.log(user1.name); // hello
class Person{
[index:string]:'A'|'B'|'C'
}
const a = new Person
a.Alice = "A"
a.Mark = "B"
a.Tim = "C"
console.log(a); // { Alice: 'A', Mark: 'B', Tim: 'C' }
class Person {
static Country:string = "Korea"
}
console.log(Person.Country); // Korea
class Person {
static hello(){
console.log("안녕하세요");
}
}
Person.hello(); // 안녕하세요
class Person {
private static Country:string = "Korea"
static hello(){
console.log("안녕하세요 " + Person.Country);
}
}
Person.hello(); // 안녕하세요 korea
class Person {
static Country:string = "Korea"
hello(){
console.log("안녕하세요 " + Person.Country);
}
change(){
Person.Country = "USA"
}
}
const user1 = new Person;
const user2 = new Person;
user2.hello(); // 안녕하세요 Korea
user1.change(); // user1 의 함수를 실행
user2.hello(); // 안녕하세요 USA
abstract class Person{
protected abstract name:string ;
abstract hello():void;
}
abstract class Person{
protected abstract name:string ;
abstract hello():void;
}
class User extends Person {
protected name: string="Tim" // protected 는 자식클래스에서 접근 가능
hello(): void {
console.log("안녕하세요 " + this.name);
}
}
const a = new User()
a.hello() // 안녕하세요 Tim
Reference
この問題について(クラス-2), 我々は、より多くの情報をここで見つけました https://velog.io/@hb-developer/200428テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol