>  기사  >  백엔드 개발  >  C# 기본 지식 편집: C# 클래스 및 구조(3)

C# 기본 지식 편집: C# 클래스 및 구조(3)

黄舟
黄舟원래의
2017-02-10 15:25:031595검색

1. 정적 클래스와 정적 멤버의 기능적 특징은 무엇인가요? 코드를 구현하시겠습니까?
정적 클래스 및 정적 멤버는 static 키워드를 사용하여 정의된 클래스 또는 멤버를 참조합니다. 정적 클래스의 모든 멤버는 정적 멤버여야 합니다. 그렇지 않으면 오류가 보고됩니다. 정적 클래스와 멤버의 특징 중 하나는 고유하다는 것입니다. 정적 클래스인 경우 인스턴스화할 수 없으며 메모리에 하나만 로드됩니다. 정적 변수 또는 메서드인 경우 이 클래스를 인스턴스화할 수 있으면 인스턴스화 횟수에 관계없이 항상 인스턴스화됩니다. 단 하나의 정적 변수 또는 메서드여야 합니다.
은 다음과 같습니다:
(1), 정적 멤버

    public class StatTicMember
    {
        public static string testA = string.Empty;
    }
    
    class Program
    {
        static void Main(string[] args)
        {
            //StaticConstruct strc = new StaticConstruct();

            //StaticConstruct strcValue = new StaticConstruct(string.Empty);

            StatTicMember sMember1 = new StatTicMember();

            StatTicMember.testA = @"静态成员";

            Console.WriteLine(StatTicMember.testA);

            StatTicMember sMember2 = new StatTicMember();

            Console.WriteLine(StatTicMember.testA);

            Console.ReadLine();
        }
    }

결과:

정적 멤버 특성:
에서 참조해야 합니다. 클래스 이름, 클래스의 객체에서 참조할 수 없습니다.
b. 클래스가 몇 번이나 인스턴스화되더라도 메모리에는 동일한 영역만 있습니다.
c. 정적 메서드에서 참조되는 경우 정적이어야 합니다(예:

    public class StatTicMember
    {
        public static string testA = string.Empty;

        public  string testB = string.Empty;

        public static void Method()
        {
            testA = @"my";//正确

            //testB = @"my";//错误
        }
    }

(2), static class

  public static class StaticClass
    {
        public static string testA = string.Empty;

        public static void StaticMethod()
        {
            Console.WriteLine(@"静态方法");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            StaticClass.testA = @"静态类";

            Console.WriteLine(StaticClass.testA);

            StaticClass.StaticMethod();

            Console.ReadLine();
        }
    }

결과:

정적 클래스 특성:
a. 멤버는 정적이어야 합니다.
b. 내부 멤버를 참조하기 위해 클래스 이름을 직접 사용할 수 없습니다. (참고: 봉인된 클래스입니다. 기본 클래스로 사용할 수 없으며 추상 클래스일 수 없습니다. 즉, 파생될 수 없습니다. )
d.
정적 클래스와 멤버를 사용하는 경우 정적 클래스는 광범위하게 사용할 수 없습니다. 왜냐하면 일단 로드되면 메모리에 영역이 있고 사용 여부에 관계없이 그대로 유지되기 때문입니다. 기억을 차지합니다. 다음과 같은 상황에서 활용 가능합니다:
a. 글로벌 변수, 프로젝트 전체에서 사용되는 변수로, 값이 쉽게 변경될 수 없으며, 모든 모듈이 변경되더라도 대응해야 합니다.
b. Math 클래스의 일부 메소드와 같이 인스턴스 데이터에서 작동하지 않고 코드의 특정 클래스와 연관되지 않은 메소드.

2. 씰링 기능? 코드를 구현하시겠습니까? 왜 봉인 클래스를 사용하나요?
Sealed 클래스는 Sealed 키워드로 수정된 클래스를 의미하며, 파생을 방지하는 것, 즉 이 클래스는 상속될 수 없습니다.
기능:
은 기본 클래스로 사용할 수 없고 추상화할 수 없으며 봉인 클래스 호출이 더 빠릅니다.
아아아아

3. 추상 클래스란 무엇인가요? 특징? 코드를 구현하시겠습니까? 인터페이스와 추상 클래스의 차이점은 무엇입니까?
추상 클래스는 abstract 키워드로 수정된 클래스를 말합니다. 그 기능은 여러 클래스를 파생시키고 기본 클래스의 공용 메서드와 속성을 공유하는 것입니다.

    public sealed class SealedClass
    {
        public  string testA = string.Empty;
    }

결과:

추상 클래스와 인터페이스의 차이점:
a. 클래스는 객체를 추상화한 것으로 이해될 수 있습니다. 객체로서의 클래스는 추상 클래스라는 클래스로 추상화됩니다. 인터페이스는 단지 동작의 사양 또는 규정일 뿐입니다. Microsoft의 사용자 정의 인터페이스 뒤에는 항상 "I can do..."라는 클래스를 표현하는 필드가 옵니다. 추상 클래스는 밀접하게 관련된 일련의 사이에서 더 정의됩니다. 클래스, 대부분의 인터페이스는 느슨하게 관련되어 있지만 모두 특정 기능을 구현합니다.
b. 인터페이스에는 기본적으로 상속의 특정 특성이 없으며 호출할 수 있는 메서드만 약속합니다.
c, 클래스는 여러 가지를 구현할 수 있습니다. 인터페이스는 한 번에 하나만 확장할 수 있습니다.
d. 인터페이스는 콜백을 지원하는 데 사용할 수 있지만 상속에는 이 기능이 없습니다.
                f. 추상 클래스에 의해 구현된 특정 메서드는 기본적으로 가상이지만 인터페이스를 구현하는 클래스의 인터페이스 메서드는 기본적으로 비가상입니다. 물론 클래스와 마찬가지로 추상 클래스도 가상으로 선언할 수 있습니다. 클래스의 기본 클래스 목록에 나열된 인터페이스의 모든 멤버에 대해 자체 구현을 제공합니다. 그러나 추상 클래스는 인터페이스 메서드를 추상 메서드에 매핑할 수 있습니다.
h. 추상 클래스는 변경 가능한 것과 불변적인 것을 분리하는 원칙을 구현합니다. 추상 클래스와 인터페이스는 불변으로 정의되며, 변경 가능한 것들은 구현을 위해 하위 클래스로 전달됩니다.
i. 좋은 인터페이스 정의는 다중 기능이 아닌 특정 기능을 가져야 합니다. 그렇지 않으면 인터페이스가 오염됩니다. 클래스가 인터페이스의 한 가지 기능만 구현하고 인터페이스에 다른 메소드를 구현해야 하는 경우 이를 인터페이스 오염이라고 합니다.
j. 추상 클래스가 인터페이스를 구현하는 경우 인터페이스의 메소드를 추상에 매핑할 수 있습니다. class 인터페이스 내의 추상 메소드로서 반드시 구현할 필요는 없으나, 인터페이스 내의 메소드는 추상 클래스의 서브클래스에서 구현된다.

위 내용은 위 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요! 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 주목해주세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.