abstract class Animal {
private String scientificName;
private String countryOfOrigin;
// Constructors
public Animal(String scientificName, String countryOfOrigin) {
this.scientificName = scientificName;
this.countryOfOrigin = countryOfOrigin;
}
// Getter methods
public String getScientificName() {
return scientificName;
}
public String getCountryOfOrigin() {
return countryOfOrigin;
}
// Setter methods
public void setScientificName(String scientificName) {
this.scientificName = scientificName;
}
public void setCountryOfOrigin(String countryOfOrigin) {
this.countryOfOrigin = countryOfOrigin;
}
// Abstract behavior method
abstract void behavior();
}
abstract class Human extends Animal {
private String ethnicity;
public Human(String ethnicity, String countryOfOrigin) {
super("Homo Sapiens", countryOfOrigin);
this.ethnicity = ethnicity;
}
// Getter and Setter for ethnicity
public String getEthnicity() {
return ethnicity;
}
public void setEthnicity(String ethnicity) {
this.ethnicity = ethnicity;
}
@Override
void behavior() {
System.out.println("Bipedal walking, advanced cognitive abilities, etc.");
}
abstract void culturalPractice();
}
class Asian extends Human {
public Asian(String ethnicity, String countryOfOrigin) {
super(ethnicity, countryOfOrigin);
}
@Override
void culturalPractice() {
System.out.println("Has cultural practices specific to Asia.");
}
}
class European extends Human {
public European(String ethnicity, String countryOfOrigin) {
super(ethnicity, countryOfOrigin);
}
@Override
void culturalPractice() {
System.out.println("Has cultural practices specific to Europe.");
}
}
public class Main {
public static void main(String[] args) {
Asian asianPerson = new Asian("East Asian", "China");
System.out.println("Scientific Name: " + asianPerson.getScientificName());
System.out.println("Ethnicity: " + asianPerson.getEthnicity());
System.out.println("Country of Origin: " + asianPerson.getCountryOfOrigin());
asianPerson.behavior();
asianPerson.culturalPractice();
System.out.println();
European europeanPerson = new European("Nordic", "Sweden");
System.out.println("Scientific Name: " + europeanPerson.getScientificName());
System.out.println("Ethnicity: " + europeanPerson.getEthnicity());
System.out.println("Country of Origin: " + europeanPerson.getCountryOfOrigin());
europeanPerson.behavior();
europeanPerson.culturalPractice();
}
}