Download How do you organise code between classes and their sub classes?

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
More on Inheritance
Dr. Andrew Wallace PhD BEng(hons) EurIng
[email protected]
Overview
• Abstraction
• Polymorphism
• Interface
• Package
• Shadows
• Object Serialization
Quiz
• What is inheritance in Java?
• How do you organise code between classes and their sub classes?
Abstraction
• Some times it is advantageous to partly implement a superclass
• Functionality that changes among sub classes
• Abstraction is when a class is partly defined
• Interface and abstraction
• Interface – 100% abstraction
• Abstraction - <= 100% abstraction
• You can’t instantiate an abstract class
Abstraction
abstract class MyClass
{
public abstract void myMethod(int in);
public abstract int myOtherMethod();
public void float yetAnotherMethod(){return 1.0;}
}
Abstraction
class MySubClass extends MyClass
{
public void myMethod(int in)
{
…
}
public int myOtherMethod()
{
…
}
}
Quiz
• What is an abstract class?
• How does an abstract class differ from an interface?
• What is the difference between overloaded and overridden
methods?
Polymorphism
• Take on many differ forms
• Using parent class to refer to a child
• … is a …
• All cats are mammals therefore …
• All mammals are cats?
Polymorphism
class Animal
class Dinosaur extends Animal
class Stegosaurus extends Dinosaur
Animal
Dinosaur
Stegosaurus
Polymorphism
Dinosaur d = new Stegosaurus();
Stegosaurus s = new Dinosaur();
Polymorphism
• Object type dictates the methods available
• Not it’s reference
• Dinosaur d = new Stegosaurus();
• d can access all Animal methods and Stegosaurus methods
• But what about overridden methods?
Polymorphism
public class Dinosaur
{
public void walk(){System.out.println(“Dinosaur walking”);}
}
public class Stegosaurus extends Dinosaur
{
public void walk(){System.out.println(“Stegosaurus walking”);}
}
Dinosaur d = new Stegosaurus();
d.walk();
Stegosaurus walking
Dynamic binding
Polymorphism
public class Dinosaur
{
public void walk(){System.out.println(“Dinosaur walking”);}
}
public class Stegosaurus extends Dinosaur
{
public void walk(){System.out.println(“Stegosaurus walking”);}
public void eatGrass(){ … };
}
Dinosaur d = new Stegosaurus();
d.eatGrass();
Quiz
• How is polymorphism implemented in Java?
• Why can a superclass reference not call a method defined in a
subclass?
Interface
• Polymorphism works for interfaces as for abstract
• Classes can implement multiple interfaces
• class MyClass implements Interface1, Interface2, Interface3
• Interfaces can extend other interfaces
• interface Interface2 extends Interface1
• Interfaces cannot implement other Interfaces
• As they don’t implement any code!
Package
• Collection of classes
• The classes in a packet can have a related function and depend on
each other (same project or sub project)
• No need for inheritance within the packet
• Java has many packets
• Util
• Awt
• Swing
• Io
• Lang
Package
• Create your own package
• Naming convention
• Hierarchical
• Domain name of organisation that created it then organisation name
• Subpackets separated by dots
• se.umu.ce.mypacket.mysubpacket
• Package keyword
• Start of file
• package se.umu.ce.mypacket.mysubpacket;
Package
• To use a package
• import packagename.classname;
• import packagename.*;
import se.umu.ce.mypacket.mysubpacket.*;
• Packages map to directory structure
• Classpath
• Eleclips – new package
Shadows
• Variables or classes in differ blocks but with the same name
Public class MyClass
{
int
x;
public void MyMethod()
{
x = 1;
int
x = 5;
System.out.println(x);
}
}
Shadows
package MyPackage;
public class MyClass { … }
package MyOtherPackage;
Import MyPackage;
public class MyClass
{
public void MyMethod()
{
MyClass
m = new MyClass();
MyPackage.MyClass pm = new MyPackage.MyClass();
}
}
Object Serialization
• Preserve the state of an object between runs
• Save an object to a file and the recreate it in the same state
• Transmit the object form one machine to another
Object Serialization
• Implement the Serializable interface (in java.io)
• All class members must be serializable else marked transient
• transient private String strString;
• Transient are derived at run time
• Use the ObjectOutputStream to write the object to a file
• writeObject
• Use the ObjectInputStream to deserialize the object
• readObject
Object Serialization
class MyClass implements Serializable {}
MyClass m = new MyClass();
try
{
FileOutputStream f = new FileOutputStream(“file.ser”);
ObjectOutputStream out = new OutputObjectStrea(f);
out.writeObject(m);
Out.close();
f.close();
}
Quiz
• What is a package in Java?
• How can you save the state of a object in Java?
Questions?