Use of abstract classes continued
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
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) {
// Create an Asian person with initial values
Asian asianPerson = new Asian("East Asian", "China");
displayPersonInfo(asianPerson);
asianPerson.behavior();
asianPerson.culturalPractice();
System.out.println("\nUpdating information...\n");
// Let's say this person discovered through a DNA test that they have significant Southeast Asian heritage
// and they also migrated to Thailand. We'll update the object's values using setter methods:
asianPerson.setEthnicity("Southeast Asian");
asianPerson.setCountryOfOrigin("Thailand");
// Display the updated information
displayPersonInfo(asianPerson);
asianPerson.behavior();
asianPerson.culturalPractice();
System.out.println();
// Create a European person
European europeanPerson = new European("Nordic", "Sweden");
displayPersonInfo(europeanPerson);
europeanPerson.behavior();
europeanPerson.culturalPractice();
}
public static void displayPersonInfo(Human person) {
System.out.println("Scientific Name: " + person.getScientificName());
System.out.println("Ethnicity: " + person.getEthnicity());
System.out.println("Country of Origin: " + person.getCountryOfOrigin());
}
}
// 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();
// }
// }
Java
INFO