본문 바로가기

개발/델파이

[9일차(1/9)] 델파이 클래스

클래스 

클래스 형으로 정의한 변수는 그 자체가 개체가 되는 것이 아니라, 메모리에 자리잡기 위해서는 인스턴스 하는 작업이 필요한데 이를 생성(Create)라고 한다.

내부적으로 데이터와 메소드를 가지고 있다. 

클래스는 type절에서 선언한다.

클래스를 선언할 때에는 예약어 Class를 사용하며 괄호 안에 계승받을 선조 클래스를 표시한다.

조상클래스를 생략하면 가상 상위의 클래스 TObject에서 계승 받는것을 의미한다.


예)

type

클래스 이름 = class (조상 클래스)

멤버 선언

end;


TPerson 클래스를 선언한 형태


type 

Tperson = Class  {TPerson 클래스 선언}

Name : string;

Age : byte;

Adress : String;

end;


var

Person : TPerson;  {TPerson 형의 변수 Person 선언}


Sealed 클래스

sealed로 표시된 클래스는 더이상 상속이 불가능 하다 

예)

TSealedClass = class sealed(TabstractClass)


실습

unit Unit2;


interface


uses

  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,

  Vcl.Controls, Vcl.Forms, Vcl.Dialogs;


type

  TPerson = class(TObject)         //TObject 상속을 받는 TPerson 클래스 생성

  private                       // 오직 이클래스에서만 사용

    ttt : String;

  public                        //다음의 내용은 다른 클래스에서도 사용

    Name : String;

    Age : byte;

    Address : String;

    Constructor Create; virtual;//create의 내용을 상속하여 사용

    function getname : String;

  end;


var

  Form2: TPerson;


implementation


{$R *.dfm}


{ TForm2 }



{ TPerson }


constructor TPerson.Create;   //사원에 대한 정보 입력

begin

     Name := 'kim';

     Age := 20;

     Adress := 'anywhere';

end;


function TPerson.getname: String; //사원이름 호출함수

begin

     result := name;

end;


TEmp = class(TPerson) // Temp는 TPerson 상속

  public

    Office : String;

    Empno : Integer;

    Baserate : real;

    Constructor Create; Override;   /create를 상속 받아와 재정의하여 사용

    function salary : real; virtual; abstract;  /salary 함수를 재사용

end;

end.


여기서 ctr+shift+C를 이용하여 코드를 입력하려고 했..는데..
에러... ㅠㅠㅠ하..



왜..왤까.. 왜야 ㅠㅠ?