성장일기
06/01 스마트팩토리 교육 -생성자, 정보은닉, 프로퍼티,상속,is as 연산자 본문
○생성자
객체 생성하려는 시도를 할 떄, 스태틱생성자가 가장 먼저 호출됨
Main안에서 아무도 스태틱생성자를 호출하지 않았지만 Person을 생성하려하니 스태틱생성자가 먼저 호출
->이때 heap에 Person객체에 디폴트생성자 호출(person1에 대입은 안한 상태)
스태틱이 더이상 뜨지 않음
=> 디버깅모드를 쓰면 프로세스 이해가 쉬움
○정보은닉
정보은닉은 캡슐화가 잘 되면 함께 지켜진다
즉 정보은닉은 캡슐화의 수단이다.
get과 set을 씀
public void SetSpeed를
if문으로 제약을 건다
○프로퍼티
○상속
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _20200601_003
{
class Program
{
public class Notebook
{
bool powerOn;
public void Boot()
{
Console.WriteLine("노트북을 부팅합니다.");
}
public void Shutdown()
{
Console.WriteLine("노트북을 끕니다.");
}
public void Reset()
{
Console.WriteLine("노트북을 리셋합니다.");
}
bool fingerScan;
public bool HasFingerScanDevice()
{
return fingerScan;
}
}
public class Desktop
{
bool powerOn;
public void Boot()
{
Console.WriteLine("데스크톱을 부팅합니다.");
}
public void Shutdown()
{
Console.WriteLine("데스크톱을 끕니다.");
}
public void Reset()
{
Console.WriteLine("데스크톱을 리셋합니다.");
}
}
public class Netbook
{
bool powerOn;
public void Boot()
{
Console.WriteLine("넷북을 부팅합니다.");
}
public void Shutdown()
{
Console.WriteLine("넷북을 끕니다.");
}
public void Reset()
{
Console.WriteLine("넷북을 리셋합니다.");
}
}
static void Main(string[] args)
{
Console.WriteLine("================= 노트북 =================");
Notebook aNoteBook = new Notebook();
aNoteBook.Boot();
aNoteBook.Reset();
aNoteBook.Shutdown();
Console.WriteLine("================= 데스크탑 =================");
Desktop aDesktop = new Desktop();
aDesktop.Boot();
aDesktop.Reset();
aDesktop.Shutdown();
Console.WriteLine("================= 넷북 =================");
Netbook aNetbook = new Netbook();
aNetbook.Boot();
aNetbook.Reset();
aNetbook.Shutdown();
}
}
}
->new로 발행해야함
º 상속은 기호 : 를 사용한다 (Java는 extends를 사용)
string타입은 상속을 더는 받지 못하도록 제한되어 있다
○형변환
값에 &iNum 넣은 뒤 나오는 값을 디버그-창-메모리에 붙여넣으면 주소가나옴
뒤집어진 숫자(바이트가 뒤집힘)->Little Endian 방식: 연산에 최적화 되어있음(일반컴)
일반 숫자 방식->Big Endian 논리연산, 대소비교에 유리(슈퍼컴)
최상위 클래스를 Object class라고 부른다
static void Main(string[] args)
{
Computer[] machines = new Computer[] ->Computer타입의 객체를 만든다
->배열객체를 가르키는 참조변수
{
new NoteBook(),new Desktop(), new Netbook() ->3개 =>Computer타입의 참조배열객체
==>NoteBook, Desktop, Netbook 각각 객체를 만듦
==>각각 배열번호 [0], [1], [2]를 가짐
};
참고) machines[0].Reset(); ->aNoteBook.Reset();과 같음
Computer[] machines;
machines = new Computer[3];
machines[0] = new NoteBook();
machines[1] = new NoteBook();
machines[2] = new NoteBook(); 로 쓸 수도 있음
DeviceManager aDeviceManager = new DeviceManager();
foreach(Computer device in machines)
{
aDeviceManager.TurnOff(device);
}
}
○as, is 연산자
'프로그래밍언어 > C#' 카테고리의 다른 글
06/03 스마트팩토리 교육-오버라이딩 (0) | 2020.06.03 |
---|---|
06/02 스마트팩토리 교육 - Object,Array,this,base (0) | 2020.06.02 |
05/29 스마트팩토리 교육- 종료자, 정적멤버, 인스턴스 멤버, 정적 생성자 (0) | 2020.05.29 |
05/28 스마트팩토리 교육- (0) | 2020.05.28 |
05/27 스마트팩토리 교육-struct, class, 배열 (0) | 2020.05.27 |