# Vererbung - private



## strohhaar (12. Apr 2011)

Hallo Leute,

ich gehe gerade ein paar Übungen durch zur Vorbereitung. Bei einer Aufgabe frage ich mich, ob die zu lösen ist (Fehler?). Bei Punkt 2 (Konstruktoren) komme ich nicht weiter. Eine Klasse erbt doch nur "Sichtbares". Müssten matrikel und name nicht z.b. eher protected sein?

klick


Gruß


----------



## AmunRa (12. Apr 2011)

ich geb dir mal einen kleinen Tip 

```
public class A{
   private String a
   public A(String a;) {
     this.a=a;
  }

}

public class B{
   A a;
 public B(){
   a=new A("HALLO");
  }

}
```

edit:
hab grad ne Änderung gemacht, da ich die Aufgabe nochmal gelesen habe


----------



## Tain (12. Apr 2011)

Ob die Variablen selbst private sind ist ja egal, da man ja auf die getter zugreift und diese public sind.
Im allgemeinen werden sogar Variablen immer private gesetzt und eben nur durch getter und setter zugreifbar gemacht.
Und was dass hier mit Vererbung zutun hat weiss ich nicht. Du meinst wohl dass erstellen von Instanzen


----------



## strohhaar (12. Apr 2011)

Als ich Punkt 1 durchgelesen hatte (Klasse Klausur definiert sich...), war ich der Meinung, dass Klausur von StudentData erbt. Das war auch Thema in der Vorlesung.
Geht es über die Vererbung oder nicht?


----------



## AmunRa (12. Apr 2011)

selbst wenn klausur von Student erbt was laut meiner Auffassung nicht richtig ist.

könntest du noch immer mit dem Super konstruktor die Variablen setzen.


----------



## strohhaar (12. Apr 2011)

```
Klausur(String name, String matrikel, float note){
		super(matrikel, name);
		this.note=note;
		super.name = name;
		super.matrikel = matrikel;
	}
```

so? Wie schaut dann der Copy-Konstruktor aus? Den bekomme ich nicht hin.


----------



## AmunRa (12. Apr 2011)

Ich schreibs leiber noch einmal hin. 

Klausur soll nicht von StudentData erben.


ein Copy-Construktor sieht immer so aus 


```
public class A{
   public A(A other){
      ...
   }

}
```


----------



## SieheDa (12. Apr 2011)

```
public interface Compare {
		public static final float AVG = 2.3F;
		public boolean istBesser (float note) throws Exception;
	}
	
	public class StudentData {
		private String name;
		private String matrikel;
		
		public StudentData(String name, String matrikel) {
			this.name = name;
			this.matrikel = matrikel;
		}
		public String getName() {
			return name;
		}
		public String getMatrikel() {
			return matrikel;
		}
		
	}
	
	public class Klausur extends StudentData implements Compare{

		private float note;

		public Klausur(Klausur klausur) {
			this(klausur.getName(),klausur.getMatrikel(), klausur.note);
		}
		
		public Klausur(String name, String matrikel, float note) {
			super(name, matrikel);
			this.note = note;
		}

		public boolean istBesser(float note) throws Exception {
			return false;
		}
		
		public float getNote() {
			return note;
		}
		
	}
```


----------

