college/Summer-2024/CS-3443/Slides/txt/08_Inheritance.txt

446 lines
7.8 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Application
Programming
Hend Alkittawi
OOP Concepts
Introduction to Inheritance in Java
INHERITANCE
-
When creating a class rather than declaring completely new members
you can designate that the new class should inherit the members of
an existing class.
-
The existing class is called the superclass and the new class is
the subclass.
-
With inheritance the instance variables and methods that are the
same for all the classes in the hierarchy are declared in a
superclass.
-
In inheritance, a new class is created by acquiring an existing
classs members and possibly embellishing them with new or
modified capabilities.
public class Animal {
}
public class Dog extends Animal {
public class InheritanceDemo {
private String name;
private String breed;
public String getName() {
return name;
}
public String getBreed() {
return breed;
}
Animal animal = new Animal();
animal.eat();
public void setName(String name) {
this.name = name;
}
public void setBreed(String breed) {
this.breed = breed;
}
Dog dog = new Dog();
// setName() is an inherited method
dog.setName("Buddy");
public void eat() {
System.out.println(getName() +
" eats food.");
}
public void bark() {
System.out.println("The dog barks.");
}
// setBreed() is a method of Dog class
dog.setBreed("Golden Retriever");
}
public static void main(String[] args){
// eat() is an inherited method
dog.eat();
// bark() is a method of Dog class
dog.bark();
}
}
INHERITANCE
-
The direct superclass is the superclass from which the subclass
explicitly inherits.
-
An indirect superclass is any class above the direct
superclass in the class hierarchy, which defines the
inheritance relationships among classes.
-
In Java, the class hierarchy begins with a class Object which
every class in Java directly or indirectly extends.
-
Java supports only single inheritance in which each class is
derived from exactly one direct superclass.
INHERITANCE
-
Inheritance and constructors
-
Constructors are not inherited, a superclasss constructors are
still available to be called by subclasses.
-
Java requires that the first task of any subclass constructor is to
call its direct superclasss constructor to ensure that the
instance variables inherited from the superclass are initialized
properly.
-
Superclass constructor call syntax:
keyword super followed by a
set of parentheses containing the super class constructor arguments
which are you used to initialize the super class instance
variables.
public class Animal {
public class Dog extends Animal {
private String name;
private String breed;
public Animal(String name) {
this.name = name;
}
public Dog(String name, String breed) {
super(name);
this.breed = breed;
}
public String getName() {
return name;
}
}
public static void main(String[] args){
Animal animal = new Animal("Hazel");
animal.eat();
Dog dog = new Dog("A Name", "A Breed");
public String getBreed() {
return breed;
}
public void setName(String name) {
this.name = name;
}
public void eat() {
System.out.println(getName() +
" eats food.");
}
public class InheritanceDemo {
// eat() is an inherited method
dog.eat();
public void setBreed(String breed) {
this.breed = breed;
}
}
public void bark() {
System.out.println("The dog barks.");
}
// bark() is a method of Dog class
dog.bark();
}
}
INHERITANCE
-
A subclass can add its own fields and methods; it is more specific than its
superclass.
-
A subclass exhibits the behavior of its superclass and can modify these
behaviors so that they operate appropriately for the subclass. A subclass can
customize methods that it inherits from its superclass to do this the
subclass overrides/redefines the superclass method with an appropriate
implementation.
-
To override a superclass method in a subclass, the subclass must declare a
method with the same signature as the superclass method.
-
When a subclass method overrides an inherited superclass method, the
superclass version of the method can be accessed from the subclass by
preceding the super-class method name with the keyword super and a DOT (.)
separator.
public class Animal {
public class Dog extends Animal {
private String name;
private String breed;
public Animal(String name) {
this.name = name;
}
public Dog(String name, String breed) {
super(name);
this.breed = breed;
}
public String getName() {
return name;
}
public static void main(String[] args){
Animal animal = new Animal("Hazel");
animal.eat();
Dog dog = new Dog("A Name", "A Breed");
// eat() is an inherited method
dog.eat();
public String getBreed() {
return breed;
}
public void setName(String name) {
this.name = name;
}
// bark() is a method of Dog class
dog.bark();
public void setBreed(String breed) {
this.breed = breed;
}
public void eat() {
System.out.println(getName() +
" eats food.");
}
}
public class InheritanceDemo {
// toString() in Dog redefines the
// behavior of toString() in Animal
String s = dog.toString();
public void bark() {
System.out.println("The dog barks.");
}
@Override
public String toString() {
return "Name: " + getName();
}
}
@Override
public String toString() {
return super.toString() + " Breed: "
+ getBreed();
}
}
}
PUBLIC, PRIVATE AND PROTECTED KEYWORDS
-
A classs public members are accessible wherever the program
has reference to an object of that class or one of its
subclasses.
-
A classs private members are accessible only within the class
itself.
-
Using protected access modifier offers an intermediate level
of access between public and private; a superclasss protected
members can be accessed by members of that superclass, by
members of its subclasses and by members of other classes in
the same package.
PUBLIC, PRIVATE AND PROTECTED KEYWORDS
-
Public members of the superclass become public members of the
subclass and protected members of the superclass become
protected members of the subclass.
-
Methods of a subclass cannot directly access private members
of their superclass. Declaring private instance variables
helps you test, debug and correctly modify systems.
package inheritance;
public class Animal {
package inheritance;
public class Dog extends Animal {
private String name;
public String aString;
public String publicString;
protected String protectedString;
private String breed;
public Dog(String name, String breed) {
super(name);
this.breed = breed;
}
public Animal(String name) {
this.name = name;
}
public String getBreed() {
return breed;
}
public String getName() {
return name;
}
public void setBreed(String breed) {
this.breed = breed;
}
public void setName(String name) {
this.name = name;
}
public void bark() {
System.out.println("The dog barks.");
}
public void eat() {
System.out.println(getName() +
" eats food.");
}
private void testAccess() {
// String s0 = name; // invalid
String s1 = getName(); // indirect access
String s2 = publicString; // insecure
String s3 = protectedString; // valid
}
@Override
public String toString() {
return "Name: " + getName();
}
}
private void animalMethod() {
// method body
}
}
@Override
public String toString() {
return super.toString() + " Breed: "
+ getBreed();
}
package inheritance;
public class InheritanceDemo {
public static void main(String[] args){
Animal animal = new Animal("Hazel");
animal.eat();
// animal.animalMethod(); // inavlid
// animal.bark(); // invalid
// animal.name = "some string"; // invalid
animal.publicString = "some string";
animal.protectedString = "some string";
Dog dog = new Dog("A Name", "A Breed");
// eat() is an inherited method
dog.eat();
// bark() is a method of Dog class
dog.bark();
// toString() in Dog redefines the
// behavior of toString() in Animal
String s = dog.toString();
// dog.name = "some string"; // invalid
dog.publicString = "some string";
dog.protectedString = "some string";
}
}
CODE DEMO
-
Create classes to demo
inheritance concepts!
DO YOU HAVE ANY
QUESTIONS?
THANK
YOU!
@
hend.alkittawi@utsa.edu
By Appointment
Online