[프로그래밍 언어 & Tool]/Dart

[Dart] 독학 필기 #5 _super, this, interface,cascade

우당탕탕 개발 일지 2025. 4. 9. 19:33

안녕하세요. 우당탕탕 개발 일지 입니다. ios 프로젝트를 준비중이라 혼자 dart를 독학해야 합니다.  유튜브 <코드 팩토리_ 왕초보 dart 강의>를 보고 공부 합니다.  자료가 많아서 마음만 먹으면 공부할 수 있는 환경에 감사하네요...아자아자 화이팅!

 

 

#22 super와 this

https://youtu.be/d-fheUTjyHo?si=lFvS7-WtizMnMaBf

 

void main()
{
	Engineer codeFactory =new Engineer(
    	l:['dart','java','C#'],
        name:'코드 팩토리',
        building:'여의도 위워크',
    );
    
    print(codeFactory.name);
    print(codeFactory.buliding);
    print(codeFactory.l);
    
	codeFactory.sayname(); // this.name은 null이고 super.name은 코드팩토리.

}

class Employee{
	final String building;
    final String name;
    
    Employee(
    	String building,
        String name,
        ):this.building =building;
        this.name=name;
    )
}
// 엔지니어
//사용할줄 아는 언어_ 리스트로 
class Engineer extends Employss{
	List<String> l;
    
    Engineer({
    	List<String>l,
        String name,
        String building,
   }) : this.l=l,
   		super(
        	building,
            name,
        );
        
void sayInfo(){
	print('저의 이름은 ${super.name}입니다.
    제가 근무하는 건물은 ${this.building}입니다. 
    제가 사용할 수 있는 언어는 ${this.l.join(', ')}입니다. );
}

void sayname()
{
	print('this.name은 ${this.name}, super.name은 ${super.name}');
}

}

 


#23 interface (선언,구현)

  • class A implements B : A는 B에 있는 변수와 메소드가 반드시 정의 되어 있어야 함. 
void main()
{
	BoyGroup bts =new BoyGroup('bts');
    bts.sayName();
   


}

//선언
class Idol {
	String name;
    
    void sayName(){}
}

// 구현
class BoyGroup implements Idol{
	String name;
    
    BoyGroup(
    	String name,
    ):this.name=name;
	
    void sayName(){
    	print("제 이름은 ${this.name}입니다.");
    }
}

 

상속이 interface를 대체할 수 있음. 


#24 cascade

..method 하면 반복된 객체 이름을 생략할 수 있음. 

void main(){

	new Idol('슬기')
    	..sayName();

}

//cascade operator

class Idol {
	String name;
    String group;
    
    Idol(
    	String name,
        String group,
       ) : this.name =name,
       		this.group =group;
            
     void satName(){
     	print('제 이름은 ${this.name}입니다.');
     }
     
 
    

}

 

 

 

 

 

 

 

 

 

 

 

728x90