Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java: Javan perintä

NiXoN1 [05.05.2008 23:14:40]

#

Olen puuhaillut seuraavanlaisen koulutehtävän parissa, ja ongelmana on ettei olioiden pinta-alat tulostu oikein. Kaikkien pinta-alat ovat nollilla. Jokaisen kuvion, eli Shape-olion, pinta-ala pitäisi tulostua abstraktilla metodilla, joka on Shape-luokan public double area(). Circle ja Rectangle periytyvät kantaluokasta Shape, mutta Square periytyy ensin Rectanglesta.

Shape.java
---------------------------------------
abstract class Shape {

	private String name;

	public Shape(String name){

		this.name = name;
	}

	abstract public double area();

	public String toString(){

		return "Nimi: " + name + " Ala: " + this.area();
	}
}

class Circle extends Shape{

	private double radius;

	public Circle(String name, double radius){

		super(name);

		radius = this.radius;
	}

	public double area(){

		return radius * radius * 3.141592654;
	}
}

class Rectangle extends Shape{

	private double length;
	private double width;

	public Rectangle(String name, double length, double width){

		super(name);

		length = this.length;

		width = this.width;
	}

	public double area(){

		return length * width;
	}
}

class Square extends Rectangle{

	private double side;

	public Square(String name, double side){

		super(name, side, side);

                side = this.side;
	}

	public double area(){

		return side * side;
	}
}

Main.java
-----------------------------------------
public class Main {

	public static void main(String[] args) {

		final String n1 = "circle";
		final String n2 = "rectangle";
		final String n3 = "square";

		Circle C = new Circle(n1, säde (arvo));
		System.out.println(C);

		Rectangle R = new Rectangle(n2, pituus (arvo), leveys (arvo));
		System.out.println(R);

		Square S = new Square(n3, sivu (arvo));
		System.out.println(S);

	}
}

Antti Laaksonen [05.05.2008 23:40:17]

#

Onkohan vika siinä, että kirjoitat esim. radius = this.radius;, vaikka kuuluisi olla this.radius = radius;? Voisi olla hyvä idea valita olion muuttujalle ja metodin parametrille eri nimi.

Jackal von ÖRF [06.05.2008 12:26:52]

#

Myös hyvä IDE havaitsee tuollaiset ongelmat. Esim. IDEA antaa varoitukset "Private field 'radius' is never assigned", "The value 'this.radius' assigned to radius is never used" jne. minkä lisäksi kenttien värikoodaus auttaa myös huomaamaan virheen.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta