학습 유니티 3D 게임 개발 매일 노트 (C #을 세 번째 주)

학습 유니티 3D 게임 개발 매일 노트 (C #을 세 번째 주)

월요일 화요일 수요일 목요일 금요일
개체 (클래스, 속성, 메소드 (함수))에 대한 정적 : 정적 봉인 인터페이스 객체 지향 요약
생성자 정적 클래스 가상 방법 디스플레이 인터페이스를 구현
소멸자 싱글 추상 메소드와 클래스 지식 포인트
구조와 클래스의 차이 : 요약 상속 가상 메소드와 추상 클래스를 선택 인덱서
보호 등급 필드 (속성) 전역 변수는 무엇인가? 연산자 오버로딩
지역 변수는 무엇인가?

2019년 7월 22일 (a)

객체 지향 :

클래스 : 동일한 속성과 행동의 추상적 인 설명입니다, 특정 그룹의 포괄적 인 설명입니다
속성 : 개체의 특정 기능
방법 (기능)이 객체가 행동에 의해 소유

생성자 : 클래스 객체에 대한 생성자 함수, 힙 영역을 열 수있는 객체의 시작이다;

  1. 직접적인 방법으로 객체 생성자 오버로드의 개체 초기화 구성, 새로운 새로운 생성자를 호출해야하며, 생성자의 이름은 클래스 이름과 일치해야하는 경우, 돌아올 수없는 유형;
  2. 우리는 클래스 생성자를 작성하지 않은 경우, 시스템은 인수가없는 생성자를 추가하는 기본 것이다 생성자 클래스가 arg를 한 경우, 시스템은 인수가없는 디폴트 구성에 추가되지 않습니다;
  3. 다른 사용에서이 생성자 :
    여기에 그림 삽입 설명

소멸자 :

이 방법은 객체의 파괴에 의해 수행되고, 우리가 일반적으로 쓰지 않는다, 시스템이 자동으로 추가됩니다. 되면 가비지 콜렉션 시스템 호출 시스템 소멸자 메모리 재생 영역을 호출;
여기에 그림 삽입 설명

요약 : 구조와 클래스의 차이 :

  1. 타임 때 개체 유형 구조, 클래스 오브젝트 참조 형;
  2. 더 클래스 생성자는 인수가없는 기본 생성자를 추가, 존재하지 않는 경우가 구성된 경우, 매개 변수는 다음 인수가없는 기본 생성자가 추가되지 않습니다;
    인수가 기본적으로 추가되지 않습니다와 매개 변수가 구성된 경우 구조는 시스템을 자신의 생성자를 추가 할 수 없습니다 또는 인수가없는 생성자를 추가합니다;
  3. 참고 현재 생성자와 구조가 할당 된 모든 속성의 전체 구조를 요구한다 클래스는하지 않습니다;
  4. 클래스 속성은 구조는 기본 값을 할당 할 수 없습니다, 기본값을 할당 할 수있다;

클래스 필드 보호 :

여기에 그림 삽입 설명
여기에 그림 삽입 설명
여기에 그림 삽입 설명

가져 오기 : 의미는 get 메소드에 해당하는 값을 반환 호출에 반환됩니다 도착,
설정 : 외부 값에 할당 된 값은 시대의 값은, 우리는 다시 한번 연령에 할당할지 여부를 선택합니다 스크리닝 방법을 설정할 수 있습니다;

2019년 7월 23일 (b)

정적 : 정적 :

①静态类型的变量是类最先加载到内存区域的;(静态方法不可以调用非静态方法,但是非晶态方法可以调用静态方法);
②静态变量或者方法,不是对象所单独拥有的;是所有对象共有的;通过类名、属性或者方法直接访问;
③静态区域的内容,是整个类中最后销毁的,也就是说不能乱声明静态属性或方法;
여기에 그림 삽입 설명
여기에 그림 삽입 설명

静态类:

单例 ---- 用于管理类,比如GameManager;
静态类 ---- 用于工具类,写工具给其他开发者调用的,比如系统提供的Console.ReadLine();
  1. 静态类在项目一运行就加载到内存;
  2. 静态类声明周期最长,所以整个项目中,能不写静态类就不写;
  3. 静态类是整个项目所共享的,静态类方法在整个项目中都可以通过类名调用;

单例:

什么类需要单例?–这个类不能有多个对象,比如游戏管理类;

여기에 그림 삽입 설명

特点:

①整个项目中这个类只有一个对象;
②单例类的写法:把构造函数私有化;

继承:

  1. object类是C#中所有类的父类;

  2. 访问修饰符
    子类名 : 父类名
    {

    }
    ①一个类只能继承一个类(一个类只能有一个直接父类);
    ②子类保存父类的所有方法和属性;
    ③base 和 this关键字在构造函数中的不同作用;
    ④派生类的构造函数需要指向一个父类的构造,如果不指定将会指向父类默认(无参)构造

  3. 访问修饰符 :
    ①public 公共的 ,所有类中了可以访问
    ②protected 保护类型的 ,在本类和子类中可以访问
    ③private 私有的,只有在本类中可以访问;类中声明变量默认是private
    ④Internal: 程序集中可以使用;

  4. new关键字,如果在子类中声明的一个成员,与父类中重名,将默认启用new关键字,将会为这个新的成员申请一个新的空间,而父类中的成员将会被隐藏。

  5. 里氏替换:is as 的用法;
    여기에 그림 삽입 설명

什么叫全局变量?

变量时类的一部分,有效范围是整个类,类中的所有方法都可以访问;即使声明在类的最后一行,在方法里也可以使用;

什么叫局部变量?

在一个固定的代码块中声明的变量;作用域是当前声明的地方到代码块结束,声明之前不能用;一般类对象临时使用,可以使用代码块括号括起来,减小类对象作用域也就是减少了对象的生命周期,提高代码效率。

2019.7.24(三)

1.Sealed:

修饰类时,当前类就不能被继承(封闭类);
修饰虚方法时,子类不能重写该方法;
여기에 그림 삽입 설명

2.虚方法:

①在父类中使用virtual修饰方法,子类中使用Override对其重写;
②子类重写了父类的虚方法,new一个子类对象赋值给父类声明一个变量;
当我们调用p2的speak虚方法,起始调用的是Chinese中重写的speak方法;
③new 关键字覆盖 和 virtual override 区别:
New关键字覆盖的方法,什么类的对象调用什么类的方法
Override调用的是生成对象时最后重写的方法;
④完成基类虚方法子类重写条件:方法名一致,返回值类型一致,参数类型个

virtual override:
여기에 그림 삽입 설명
new:
여기에 그림 삽입 설명

3.抽象方法和抽象类:

① 추상 클래스에 있어야합니다 추상적 인 수정을 사용,
② 추상 메소드는 특정 메소드 본문 없다;
③ 추상 클래스는 추상 수정해야, 서브 클래스는 추상 클래스는 모든 추상 메소드를 추상 클래스를 구현해야 상속,
④ 추상 클래스 있지만, 당신은 객체의 인스턴스를 가질 수 없습니다,하지만 당신은 생성자, 일반 규칙 서브 클래스 사이에 차이가 서브 클래스의 생성자를 쓸 수 있습니다;

4. 추상 클래스 가상 방법과 선택 :

상기 상위 클래스로, 필요성이 때 가상 메소드를 인스턴스화하는 경우 ① 통상의 클래스를 사용하여 인스턴스화 될 필요
추상 클래스에 의해 고려 될 수 있고, ② 부모 클래스가 필요하지 인스턴스화되면,
③의 혼합물은 일반적으로 추상 클래스 가상 메소드를 사용하여 추가 서브 클래스 선택적 가상 메소드를 사용하여 구현 될 수 있으며,이 방법은 추상적 인 방법으로 구현되어야한다;

2019년 7월 25일 (d)

인터페이스

여기에 그림 삽입 설명
1. 메소드 본문이 없어야합니다 인터페이스의 인터페이스 키워드 수정, 방법 및 속성을 사용,
2. 인터페이스 그는 수업이 아님을 알아야하며, 생성자를 가질 수 없습니다, 물론, 클래스 객체의 인터페이스를 가질 수 없습니다
3. 기본 멤버가 공개되어,
(4) 클래스가 다른 클래스에서 상속 및 기본 클래스해야 사설에 대한 인터페이스를 구현하는 경우 클래스는 여러 인터페이스를 구현할 수있는 인터페이스는 인터페이스를 상속 할 수 있습니다;
여기에 그림 삽입 설명여기에 그림 삽입 설명

디스플레이 인터페이스를 구현

여기에 그림 삽입 설명
결과 :
여기에 그림 삽입 설명

지식 포인트 :

	引用类型默认值是null;
	值类型默认值是0;---------每一种编程语言不一样;

인덱서 :

여기에 그림 삽입 설명

namespace 索引器
{

    class Person
    {
        public string name;
        public int age;
        public string sex;
        public string address;
        public float height;

        public Person() { }
        public Person(string name,int age,string sex,string address,float height)
        {
            this.name = name;
            this.age = age;
            this.sex = sex;
            this.address = address;
            this.height = height; 
        }

        public string this[int x] {
            get {
                switch (x)
                {
                    case 0:
                        return name;
                    case 1:
                        return age.ToString();
                    case 2:
                        return sex;
                    case 3:
                        return address;
                    case 4:
                        return height.ToString();
                    default:
                        return "下标号越界";
                }
            }
            set {
                switch (x)
                {
                    case 0:
                        name = value;
                        break;
                    case 1:
                        age = int.Parse( value);
                        break;
                    case 2:
                        sex = value;
                        break;
                    case 3:
                        address = value;
                        break;
                    case 4:
                        height = float.Parse(value);
                        break;
                    default:
                        break;
                }
            }

        }

        public  void SayHello()
        {
            Console.WriteLine("哈罗,我是" + name);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            
            Person zhangsan = new Person("张三", 20, "男", "中国", 1.75f);
            zhangsan[1] = "34";
            Console.WriteLine(zhangsan[1]);

            Console.ReadLine();
        }
    }
}

오버로드 운영자 :

여기에 그림 삽입 설명
여기에 그림 삽입 설명
여기에 그림 삽입 설명

2019년 7월 26일 (E)

객체 지향 요약 :

  1. 패키지 : 어떻게 클래스를 작성하는? 어떤 속성, 필드, 메소드,
  2. 상속 : 릭터 여분 (처럼), 개선 된 코드 효율,베이스
  3. 다형성 : 다른 개체에 적용된 동일한 방법이 다른 효과를 갖는다
    1. 가상 기능 : 가상 가상 함수가 일반적인 범주에 쓸 수는,이 추상 클래스로 작성 될 수 서브 클래스가 부모 클래스의 가상 메소드를 오버라이드 (override) 할 수 있습니다, 다시 할 수 없습니다;
    2. 추상 클래스, 추상 기능 : 추상 추상 함수는 추상 클래스로 작성해야하며, 오버라이드 (override) 할 필요가 서브 클래스는, 추상 클래스는 객체를 가질 수 없습니다, 추상적 인 기능에는 함수 본문 없습니다
    3. 인터페이스 : 클래스없는 클래스는 보충을 선호, 클래스는 여러 인터페이스를 구현할 수 있습니다 (이것은 특히 유연한 I을 사용하여 인터페이스)

추천

출처blog.csdn.net/weixin_43814599/article/details/97173365