00:00
/*01, Dog obj. access animal mt , w/o inheritance. */
class Animal{
void eat(){
System.out.println("i am eating");
}
}
class Dog{
public static void main(String[] args) {
Dog d = new Dog();
d.eat(); // error
}
}
// cannot find symbol d.eat(); // error
/*02, above issue done, making local mt */
public class E_002Animal{
void eat(){
System.out.println("i am eating food");
}
}
class Dog{
public static void main(String[] args) {
Dog d = new Dog();
d.eat();
}
void eat(){
System.out.println("i am eating ice cream");
}
}
// i am eating
/*03, above issue done, using extends */
public class E_003Animal{
void eat(){
System.out.println("i am eating");
}
}
class Dog extends E_003Animal{
public static void main(String[] args) {
Dog d = new Dog();
d.eat(); // works
}
}
// works fine
/*04, single i/h */
public class E05{
void showA(){//1
System.out.println("a class method");
}
}
class B2 extends E05{
void showB(){//2
System.out.println("b class method");
}
public static void main(String[] args) {
E05 ob1 = new E05();
ob1.showA();//1
ob1.showB(); // wrong
B2 ob2 = new B2();
ob2.showA();//2
ob2.showB(); // ok
}
}
// cannot find symbol ob1.showB();
/*05, Multilevel i/h */
class E06{
void showA(){
System.out.println("A Class Method");
}
}
class B3 extends E06{
void showB(){
System.out.println("B Class Method");
}
}
class C3 extends B3{
void showC(){
System.out.println("C Class Method");
}
public static void main(String[] args) {
E06 ob1 = new E06();
System.out.println("\n - - - - - - - - Printing = ob1 ");
ob1.showA();//1
ob1.showB(); // wrong
ob1.showC(); // wrong
B3 ob2 = new B3();
System.out.println(" - - - - - - - - Printing = ob2 ");
ob2.showA();//1
ob2.showB();//2
ob2.showC(); // wrong
C3 ob3 = new C3();
System.out.println(" - - - - - - - - Printing = ob3 ");
ob3.showA();//1
ob3.showB();//2
ob3.showC();//3
}
}
// - - - - - - - - Printing = ob1
// A Class Method
// - - - - - - - - Printing = ob2
// A Class Method
// B Class Method
// - - - - - - - - Printing = ob3
// A Class Method
// B Class Method
// C Class Method
/*06, herirical i/h with 2 diff. cls. */
class E07{
void showA(){
System.out.println("a class method");
}
}
class B4 extends E07{
void showB(){
System.out.println("b class method");
}
}
class C4 extends E07{
void showC(){
System.out.println("c class method");
}
public static void main(String[] args) {
E07 ob1 = new E07();
ob1.showA();
B4 ob2 = new B4();
ob2.showA();
ob2.showB();
C4 ob3 = new C4();
ob3.showA();
ob3.showC();
}
}
// a class method
// a class method
// b class method
// a class method
// c class method
/*07, Multiple i/h with 2 clS and same m/t. */
class E08{
void showX(){
System.out.println("a class method");
}
}
class B5{
void showX(){
System.out.println("b class method");
}
}
class C5 extends E08, B5{ // let assume
public static void main(String[] args) {
E08 ob1 = new E08();
ob1.showX(); // complier confused which method is this
B5 ob2 = new B5();
ob2.showX();
}
}
// E08.java:12: error: '{' expected class C5 extends E08, B5{