1 답변

  • 좋아요

    1

    싫어요
    채택 취소하기

    java에서 final은 여러용도인데 그건 C#에선 sealed랑 readonly랑 같습니다.

    클래스에서 상속을 방지할때

    Java public final class MyFinalClass {...} C# public sealed class MyFinalClass {...}

    메소드에서 가상함수의 오버라이딩을 방지할때

    Java

    public class MyClass
    {
        public final void myFinalMethod() {...}
    }
    

    C#

    public class MyClass : MyBaseClass
    {
        public sealed override void MyFinalMethod() {...}
    }
    

    두 언어간에 주목할만한 차이는 자바에서는 모든 비정적 메소드가 가상으로 오버라이딩 될 수 있는데 C#에서는 override로 표현을 해야 오버라이딩이 가능합니다. 그러므로 더이상 오버라이딩 하길 원하지 않을때 메소드 앞에 sealed를 붙여주시면 됩니다.

    변수에서 상수선언할때

    Java public final double pi = 3.14; C# public readonly double pi = 3.14;

    추가적으로

    readonly는 생성자에서 한 번 더 할당할 수 있고 const는선언시 값이 할당되어야 하는 차이가 있습니다.

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.