자바 clone 도무지 이해가 안갑니다 부탁드립니다

익명 사용자의 이미지

1. Clone 은 prootected이기 때문에 오버 라이딩 해애 한다.
ㅡ 그런데 같은패키지리면 상관없지않나요? 즉 디폴트 패키지인 상황에서 한클래스에서 굳이 public으로 왜 재정의를 해야하나요?

2.클래스 public object ...안에서 재정의된 public clone 매서드 에서
return super.clone()에서 super는 이클래스가 상속하는 클래스이므로 object 를 의미하는 것인가요?

3. 2번내용에서 return은 object형을 반환 하는데 이 매서드를 호출한 내용을보면
rec a
rec b
b=(rec)a.clone()
이렇게 되어있는데 의문인게 object형을 리턴하는데 이를 이를 오류없이 그냥 다운캐스팅 이 되나요? 다운캐스팅 조건이 참조값이 자식형을가지고있어야만 되는걸로 알고있습니다

익명 사용자의 이미지

> 1. Clone 은 prootected이기 때문에 오버 라이딩 해애 한다.

아닙니다. 단순히 clone을 지원하고 싶으면 오버라이드하는 겁니다. java.lang.Object 에 clone이 protected로 선언되어 있는 것은 사용자가 정의한 클래스가 clone을 지원할 필요가 없거나 해서는 안되는 경우가 많기 때문입니다. 만약에 clone이 Object의 public 메소드로 선언되어 있었다면 모든 클래스가 clone을 적절하게 오버라이드해야 하겠지요. 자바에서는 모든 클래스가 Object를 상속하니까요. protected 니까 지원하고 싶지 않으면 그냥 오버라이드 안하면 되는 겁니다. protected 니까 오버라이드해야하는 것이 아니고 그 반대로 protected니까 오버라이드 안해도 되는겁니다.

2, 3 은 질문이 이상하군요. public object? 이게 뭔가요? rec는 또 뭐구요? 질문을 정확히 다시해보세요.

clone을 오버라이드하면 다운캐스팅은 필요없습니다. java.lang. Object.clone의 리턴 타입은 Object이지만 클래스 X의 clone의 리턴 타입은 X이어야합니다.

1112의 이미지

object가 인터페이스도 아닌데 오버라이드를 하고말고는 상관이없는거 같아요 질문은 한소스파일즉 디폴트 패키지일때 clone을 오버라이딩하지않아도 사용할수 있느냐에요 다른 인스턴스를 호출하지않고 메인에서 바로

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.