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
는선언시 값이 할당되어야 하는 차이가 있습니다.
댓글 입력