카테고리 없음
SMART FACTORY - 초기화목록/상속/프로퍼티
이준호
2020. 7. 15. 18:21
반응형
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp4
{
class Program
{
public class Car
{
string color;
string vender;
string name;
//생성자에 대해 공부하자 ?
//메소드이다
//클래스 이름과 같아야한다.
//
public Car() //디폴트 생성자 !
{
Console.WriteLine("Car 디폴트 생성자 호출");
}
/// <summary>
/// 코드 중복을 제거하는 방법 this를 가져온다 초기화 목록
/// </summary>
/// <param name="name"></param>
public Car(string name) : this(name,"","") //생성자 오버로딩!
{
//this.name = name;
//Console.WriteLine("Car 생성자 호출");
}
public Car(string name,string vender) : this(name, vender, "") //생성자 오버로딩!
{
//this.name = name;
//this.vender = vender;
//Console.WriteLine("Car 생성자 호출");
}
public Car(string name, string vender,string color) //생성자 오버로딩!
{
this.name = name;
this.vender = vender;
this.color = color;
Console.WriteLine("Car 생성자 호출");
}
~Car()
{
Console.WriteLine("Car 종료자 호출");
}
}
static void Main(string[] args)
{
Console.WriteLine("1.==================");
Car aCar = new Car("비엠다블류"); //인자가 있는 생성자
Car car= new Car();
Console.WriteLine("2.==================");
}
}
}
null= "" = '0' 모두다 같은 값이다 기호에 맞게 사용하면 된다 !
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp4
{
class Program
{
public class Car
{
string color;
string vender;
string name; //내부에 있는 데이터를 바꿀때는 메소드를 통해서 바꿔준다
public void SetName (string name)
{
name = "Auto:" + name ;
this.name = name;
}
public void Print()
{
Console.WriteLine( $"[{name}],[{vender}],[{color}]");
}
//생성자에 대해 공부하자 ?
//메소드이다
//클래스 이름과 같아야한다.
//
public Car() //디폴트 생성자 !
{
Console.WriteLine("Car 디폴트 생성자 호출");
}
/// <summary>
/// 초기화 목록 :코드 중복을 제거하는 방법 this를 가져온다
/// </summary>
/// <param name="name"></param>
public Car(string name) : this(name,"미입력","미입력") //생성자 오버로딩!
{
}
public Car(string name,string vender) : this(name, vender, "")
{
}
public Car(string name, string vender,string color)
{
this.name = name;
this.vender = vender;
this.color = color;
Console.WriteLine("Car 생성자 호출");
}
~Car()
{
Console.WriteLine("Car 종료자 호출");
}
}
static void Main(string[] args)
{
Console.WriteLine("1.==================");
Car aCar = new Car("비엠다블류"); //인자가 있는 생성자
Car car= new Car();
Console.WriteLine("2.==================");
aCar.Print();
aCar.SetName("비안츠");
aCar.Print();
Console.WriteLine("3.==================");
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp4
{
class Program
{
public class Car
{
string color;
string vender;
string name; //내부에 있는 데이터를 바꿀때는 메소드를 통해서 바꿔준다
public string GetName()
{
return name;
}
public void SetName (string name)
{
name = "Auto:" + name ;
this.name = name;
}
public void Print()
{
Console.WriteLine( $"[{name}],[{vender}],[{color}]");
}
//생성자에 대해 공부하자 ?
//메소드이다
//클래스 이름과 같아야한다.
//
public Car() //디폴트 생성자 !
{
Console.WriteLine("Car 디폴트 생성자 호출");
}
/// <summary>
/// 초기화 목록 :코드 중복을 제거하는 방법 this를 가져온다
/// </summary>
/// <param name="name"></param>
public Car(string name) : this(name,"미입력","미입력") //생성자 오버로딩!
{
}
public Car(string name,string vender) : this(name, vender, "")
{
}
public Car(string name, string vender,string color)
{
this.name = name;
this.vender = vender;
this.color = color;
Console.WriteLine("Car 생성자 호출");
}
~Car()
{
Console.WriteLine("Car 종료자 호출");
}
}
static void Main(string[] args)
{
Console.WriteLine("1.==================");
Car aCar = new Car("비엠다블류"); //인자가 있는 생성자
Car car= new Car();
Console.WriteLine("2.==================");
aCar.Print();
aCar.SetName("비안츠");
aCar.Print();
string name = aCar.GetName(); // 변수의 값 (데이터) 값을 보호할 때 이렇게 메소드를 통해 확인하고 변경한다.
Console.WriteLine("읽어온 값은 : " + name);
Console.WriteLine("3.==================");
}
}
}
보안을 위해서 변수 값을 바로 못 바꾸고 메소드를 통해서만 변경 또는 읽어 올 수 있게 만들 수 있다. !!!!!!!!!!!!!!!!
프로퍼티
set영역에서는 무조선 value 값을 넣어 준다 ,
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp4
{
class Program
{
public class Car
{
const int iNum1 = 10; // 컴파일 되기 전부터 셋팅 고정
readonly int iNum2; // 컴파일 될때 셋팅이 되는 값 -로그인 할때 별명 값설정 이건 리드온리
string _color;
string _vender;
string _name; //내부에 있는 데이터를 바꿀때는 메소드를 통해서 바꿔준다
/// <summary>
/// 프로퍼티 - 겟셋
/// </summary>
public string name
{
get
{
return _name;
}
set
{
value = "Auto:" + value;
this._name = value;
}
}
public string GetName()
{
return _name;
}
public void SetName (string name)
{
name = "Auto:" + name ;
this._name = name;
}
public void Print()
{
Console.WriteLine( $"[{_name}],[{_vender}],[{_color}]");
}
//생성자에 대해 공부하자 ?
//메소드이다
//클래스 이름과 같아야한다.
//
public Car() //디폴트 생성자 !
{
Console.WriteLine("Car 디폴트 생성자 호출");
}
/// <summary>
/// 초기화 목록 :코드 중복을 제거하는 방법 this를 가져온다
/// </summary>
/// <param name="name"></param>
public Car(string name) : this(name,"미입력","미입력") //생성자 오버로딩!
{
}
public Car(string name,string vender) : this(name, vender, "")
{
}
public Car(string name, string vender,string color)
{
iNum2 = 100; // 생성자에 변수를 불러 놓으면 생성자가 호출 될때 한번 값을 바꿔준다.
this._name = name;
this._vender = vender;
this._color = color;
Console.WriteLine("Car 생성자 호출");
}
~Car()
{
Console.WriteLine("Car 종료자 호출");
}
}
static void Main(string[] args)
{
Console.WriteLine("1.==================");
Car aCar = new Car("비엠다블류"); //인자가 있는 생성자
Car car= new Car();
Console.WriteLine("2.==================");
aCar.Print();
aCar.SetName("비안츠");
aCar.Print();
string name = aCar.GetName(); // 변수의 값 (데이터) 값을 보호할 때 이렇게 메소드를 통해 확인하고 변경한다.
Console.WriteLine("읽어온 값은 : " + name);
Console.WriteLine("3.==================");
aCar.name = "람보르기니"; //프로퍼티 문법은 사용하여 정보 입력 및 호출
aCar.Print();
name = aCar.name;
Console.WriteLine("읽어온 값은 : " + name);
Console.WriteLine("4.==================");
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp5
{
class Parent
{
public int iNum = 100;
public Parent()
{
Console.WriteLine("Parent 클래스 생성자");
}
~Parent()
{
Console.WriteLine("내가 Parent 소멸자이다");
}
}
class Child : Parent
{
public int iNum=200;
public Child()
{
Console.WriteLine("Child 클래스 생성자");
}
~Child()
{
Console.WriteLine("내가 Child 소멸자이다");
}
public void Print()
{
Console.WriteLine("Child 클래스 iNum : "+iNum);
Console.WriteLine("Parent 클래스 iNum : " + base.iNum);
}
}
class Program
{
static void Main(string[] args)
{
Child child = new Child();
child.Print();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp6
{class Parent
{
public /*virtual*/ void Name()
{
Console.WriteLine("Parent");
}
}
class Child : Parent
{
public /*override*/ void Name()
{
Console.WriteLine("Child");
}
}
class GrandChild : Child
{
public /*override*/ void Name()
{
Console.WriteLine("GrandChild");
}
}
class Program
{
static void Main(string[] args)
{
Parent obj1 = new Parent();
Child obj2 = new Child();
GrandChild obj3 = new GrandChild();
obj1.Name();
obj2.Name();
obj3.Name();
}
}
}
객체 기반의 엄청난 이점을 가져옵니다.
이걸 트루로 바꾸면 버퍼링이 안걸린다 !
반응형