Dziedziczenie prosty kod

0

Witam, dopiero co zaczynam z javą, czy ktoś mógłby mi wytłumaczyć co jest nie tak z tym kodem? Nie chce się skompilować

class Zwierze {

public String bieganie;
public String siedzenie;

public Zwierze (String bieganie, String siedzenie) {
	this.bieganie = bieganie;
	this.siedzenie = siedzenie;
	}
	
	public String getBieganie() {
		return this.bieganie;
	}
	public String getSiedzenie() {
		return this.siedzenie;
	}
}

class Szynszyl extends Zwierze 
{
	public Szynszyl(String bieganie, String siedzenie) {
		super(bieganie, siedzenie);
	}
}
class Application {
	public static void main(String [] args)
	{
		class Szynszyl szynszyl = new Szynszyl("teraz biega.." , "zmęczył się i siedzi"); 
		String bieganie = szynszyl.getBieganie();
		String siedzenie = szynszyl.getSiedzenie();
		
		System.out.println(bieganie , siedzenie);
	}
}
>
1

Zamień:

class Szynszyl szynszyl = new Szynszyl("teraz biega.." , "zmęczył się i siedzi"); 

Na:

Szynszyl szynszyl = new Szynszyl("teraz biega.." , "zmęczył się i siedzi"); 

I podawaj komunikaty błędów, bo mało jest ludzi którym chce się rozwiązywać czyjeś "zagadki".

1

Najprostsza przerobka kodu zeby działało

class Application {
    public static void main(String [] args)
    {
        Szynszyl szynszyl = new Szynszyl("teraz biega.." , "zmęczył się i siedzi"); 
        String bieganie = szynszyl.getBieganie();
        String siedzenie = szynszyl.getSiedzenie();

        System.out.println(bieganie + siedzenie);
    }
}
0

Dzięki wielkie 👍

2

System.out.println(bieganie , siedzenie);

pintln przyjmuje jeden argument a nie dwa. Jak chcesz wstawić tam dwie zmienne typu string, to musisz je "złączyć", czyli + wstawić :) a jak chcesz żeby ładnie ze spacją były to napisać

System.out.println(bieganie + " " + siedzenie);

0

Witam, żeby nie tworzyć nowego wątku . Może mógłby mi ktoś wyjaśnić co jest źle w tym kodzie?

class UserValidator
{
public void validate(User user) {
if(user.getName() != null ) {
validateAgeAndHeight(
}

}

public void validateAgeAndHeight(double age , double height) {

if(age > 30 && height > 160) {

System.out.println("User is older than 30 and higher than 160cm");

} else {

System.out.println("User is younger than 30 and lower than 160cm");

}
}
}
class User {

private String name;

private double age;

private double height;

public User(String name , double age, double height ) {
this.name = name;
this.age = age;
this.height = height;
}

public String getName() {
return name;
}
public double.getAge() {
return age;
}
public double.getHeight() {
return height;
}

}

class Aplication

{

public static void main(String[] args) throws java.lang.Exception

{
	System.out.println("Start");
	
	
	User bartosz = new User("Bartosz", 24 , 184.0);
	
	System.out.println(bartosz.getName());
	
	
	UserValidator validator = new UserValidator();
	validator.validate(bartosz);
	
	System.out.println("Stop");
}

}

a błąd wyskakuje taki ;

illegal start of expression, line 6
';' expected, line 6
illegal start of expression, line 9
';' expected, line 9
'.class' expected, line 9
';' expected, line 9
';' expected, line 9
expected, line 39
expected, line 42
reached end of file while parsing, line 70

0
public void validate(User user) {
		if(user.getName() != null ) 
			validateAgeAndHeight( <----------- tutaj
	}

Jak widzisz, metoda validateAgeAndHeight przyjmuje 2 argumenty: age i height

 public void validateAgeAndHeight(double age , double height)

więc możesz ją wywołać na przykład w taki sposób:

validateAgeAndHeight(user.getAge(), user.getHeight());

Jeszcze zastanawia mnie dlaczego age jest typu double :O

0

Super, bardzo to wszystko pomocne, ale mam jeszcze problem z jednym kodem, a dokładniej chodzi o boolean bonus , teraz jest tak że kompilator zawsze policzy wypłatę z bonusem, a mi chodzi o to żeby ustawić warunek; jeśli jest bonus to wypłać wypłatę + bonus, jeśli nie, wypłać samą wypłatę,


```interface Employee {
	double calculateSalary();
}

class SalaryPlusBonusEmployee implements Employee {
	
	private double salary;
	private double bonus;
	
	public SalaryPlusBonusEmployee(double salary , double bonus) {
		
		this.salary = salary;
		this.bonus = bonus;
		
	}
	
	public double calculateSalary() {
		
		boolean bonus = true;
		
		if(bonus) {
			
			return this.salary + this.bonus*this.salary; 

		} else {
			return this.salary;
			}
	}
}

	
	
class PaidPerProductEmployee implements Employee{
	
	private double productPrice;
	private double productAmount;
	
	public PaidPerProductEmployee(double productPrice, double productAmount) {
		
		this.productPrice = productPrice;
		this.productAmount = productAmount;
	}
	
	public double calculateSalary() {
		return this.productAmount * this.productPrice;
	}
}

abstract class SalaryPayout {
	
	private Employee employee;
	
	public SalaryPayout(Employee employee) {
		this.employee = employee;
	}
	
	protected abstract void payout();
	
	public void processPayout() {
		
		System.out.println("Adding payout for " + this.employee.calculateSalary() + "PLN");
		this.payout();
		
		System.out.println("Payout has been completed");
	}
}

class SalaryPayoutProcessor extends SalaryPayout {
	
	public SalaryPayoutProcessor (Employee employee) {
			super(employee); 
	}
	
	protected void payout() {
		System.out.println("Sending money to employee"); 
	}
}

class Application {
	public static void main(String [] args) {
		
		SalaryPlusBonusEmployee Spbe = new SalaryPlusBonusEmployee(2000,0.2);
		PaidPerProductEmployee Pppe = new PaidPerProductEmployee(5, 23);
		
		
		SalaryPayoutProcessor processor = new SalaryPayoutProcessor(Spbe);
		processor.processPayout();
		
	}
}
0

Przecież już masz ten warunek. Wystarczy, że zmienisz bonus = false; i będzie naliczać samą wypłatę bez bonusu

0

tak, tylko że jeśli wpiszę false to program zawsze będzie naliczał samą wypłatę, jeśli wpiszę true to program zawsze policzy wypłatę + bonus i wymusi na mnie wpisania jakiejś wartości w bonusie nawet jeśli go nie będzie (0) a mi chodzi o to żeby program widział, że jeśli nie wpisuje żadnej wartości do bonusa, to oblicza samą wypłatę. Nie wiem czy dobrze to wyjaśniłem ale może ktoś sie zorientuje o co mi chodzi :)

0

Nie wiem czy dobrze rozumiem, ale można zrobić to CHYBA w taki sposób:

if(this.bonus == null) {
return this.salary;
}
else {
return this.salary * this.bonus;
}

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.