I think you are simply misudnerstading how inheritance works. A subclass inherits the methods and variables of the class you inherit from. When you create an object you are creating a reference to the class.

For example lets say you have a Person class and a Student class that extends Person. Your person class holds name and phone number while the student class has the additional field of a student id. Now lets say you create a reference to Person naturally you have access both name and phone number but not student id because it knows nothing of it. Now you create a different reference that is a Student. Eventhough your student class has no name and phone number fields it still has access to them because it is inheriting them from Person. You did not have to write additional code into this student class other than that code to handle the student id.

Pseudo code
Java Code:
Person class
-name : String
-phone : String
+Person()
+Person(name : String, phone : String)
+setName(name : String) : void
+getName() : String
+setPhone(phone : String) : void
+getPhone() : String
+toString() : String
Java Code:
Student extends Person 
-studentId : int
+Student(name : String, id : int)
+Student(name : String, phone : String, id : int)
+setId(id : int) : void
+getId() : int
+toString() : String
Java Code:
Tester class
Person p = new Person("Henry", "555-123-4567");
Person s = new Student("Anna", 155423);

S.o.p(p);
//Displays:
//Name: Henry
//Phone: 555-123-4567

S.o.p(s);
//Displays
//Name: Anna
//Phone:
//Student id: 155423
As you can see the Student does not contain any code pertaining to name or phone but it still has access to these fields and methods because it has inherited them from the Person class. When you create the object it is simply creating a reference of the class a blueprint if you would like to think of it as that. When you create a "new" reference it is like giving it a blank blueprint to fill in with new values.

Hopefully I helped make it a little easier to understand and not more confusing.