title: Java OO Concept
body: <p>Good day!</p>
  
  <p>I am reviewing the Java OO concept.
  And wrote the following codes:</p>
  
  <pre><code>  public class Main {  
          public static void main(String[] args) {
              Animal dog = new Dog();
              dog.eat();
              dog.sleep();
          }
  
      }
  
  abstract public class Animal {
  
      private int age;
      public Animal (){
          age = 1;
      } 
      public Animal (int age){   //How can I call this constructor?
          this.age = age;
      }
      public void eat(){
          System.out.println("Eat");
      }
      abstract public void sleep();
  }
  
  abstract public class Canine extends Animal{
  
      abstract public void roam();
  
  }
  
  public interface Pet {
  
      public String petName = null;  //i want the pets to have a variable petName.
      public void trick();
      }
  
  
  public class Dog extends Canine implements Pet{
  
      public void roam(){
          System.out.println("roam");
      };
  
      public void sleep(){
          System.out.println("sleep");
      };
  
      public void eat(){
          System.out.println("Eat Dog");
      };
  
      public void trick(){
          System.out.println("trick");
      }
  
  }
  </code></pre>
  
  <p>I have several questions as follows:</p>
  
  <ol>
  <li><p>How can I call the Animal Overloaded constructor?</p></li>
  <li><p>How can I use the variable petName in the PET Interface?</p></li>
  <li><p>Am I doing the concept of OO correctly? What rules am I violating?</p></li>
  </ol>
  
  <p>Thank you in advance.</p>