Practical Coding in Java

Learn to write and validate your own code

Darren Kessner, PhD

(revised January 9, 2026)

Previous: 9. Inheritance and Interfaces

Person

//
// Person.java
//


public class Person
{
    public Person(String name)
    {
        this.name = name;
    }

    public void greeting()
    {
        System.out.println("Hello, my name is " + name); 
    }

    protected String name; // subclasses can access protected variables
}
//
// Student.java
//


public class Student extends Person
{
    public Student(String name)
    {
        super(name); // call the superclass (Person) constructor
    }

    public void greeting()
    {
        System.out.println("Hello, I'm a student, and my name is " + name); 
    }
}
//
// PersonTest.java
//


public class PersonTest
{
    public static void main(String[] args)
    {
        Person drkessner = new Person("Dr. Kessner");
        drkessner.greeting();

        // a Student is a Person

        Person briley = new Student("Briley");
        briley.greeting();
    }
}

Output:

Hello, my name is Dr. Kessner
Hello, I'm a student, and my name is Briley

Next: