Lecture Java methods: Object-oriented programming and data structures (2nd AP edition): Chapter 11 - Maria Litvin, Gary Litvin

31 22 0
Lecture Java methods: Object-oriented programming and data structures (2nd AP edition): Chapter 11 - Maria Litvin, Gary Litvin

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Chapter 11 - Class hierarchies and interfaces. In this chapter, the learning objectives are: Understand class hierarchies and polymorphism, learn about abstract classes, learn the syntax for calling superclass’s constructors and methods, understand interfaces.

Java Methods Object-Oriented Programming and Data Structures 2nd AP edition with GridWorld Maria Litvin ● Gary Litvin C  h  a  p  t  e  r      Class Hierarchies and Interfaces Copyright © 2011 by Maria Litvin, Gary Litvin, and Skylight Publishing All rights reserved Objectives: • Understand class hierarchies and polymorphism • Learn about abstract classes • Learn the syntax for calling superclass’s constructors and methods • Understand interfaces 11­2 Inheritance Superclass (Base class) Subclass extends Superclass Subclass (Derived class) • Inheritance represents the IS-A relationship between objects: an object of a subclass IS-A(n) object of the superclass 11­3 Class Hierarchies • Using inheritance, a programmer can define a hierarchy of classes   Actor Flower WiltingFlower Rock BoxBug Bug UTurnBug 11­4 Class Hierarchies (cont’d) • Help reduce duplication of code by factoring out common code from similar classes into a common superclass Bug Constructor canMove move turn act (redefined) Actor Constructor Accessors putSelfInGrid removeSelfFromGrid setColor moveTo act Flower Constructor act (redefined) 11­5 Class Hierarchies (cont’d) • Help reduce duplication of code by letting you write more general methods in client classes public void add (Location loc, Bug occupant) { occupant.putSelfInGrid(getGrid(), loc); } public void add (Location loc, Flower occupant) { occupant.putSelfInGrid(getGrid(), loc); } Works for a Bug or a Flower any Actor public void add (Location loc, Actor occupant) { occupant.putSelfInGrid(getGrid(), loc); } 11­6 Abstract Classes • Some of the methods in a class can be declared abstract and left with only signatures defined • A class with one or more abstract methods must be declared abstract public abstract class Actor { public abstract void act(); } Abstract method 11­7 Abstract Classes (cont’d) • Abstract classes serve as common superclasses for more specific classes • An abstract method provides an opportunity for the compiler to additional error checking • Abstract classes are closer to the root of the hierarchy; they describe more abstract objects 11­8 Abstract Classes (cont’d)   Object Component Button TextComponent JTextComponent Container JComponent AbstractButton JTextArea JTextField JMenuItem Window JPanel JButton A fragment of Java library GUI class hierarchy (abstract classes are boxed) 11­9 Abstract Classes (cont’d) • Java does not allow us to instantiate (that is, create objects of) abstract classes • Still, an abstract class can have constructors they can be called from constructors of subclasses • A class with no abstract methods is called concrete 11­10 Polymorphism • Ensures that the correct method is called for an object of a specific type, even when that object is disguised as a reference to a more generic type, that is, the type of the object’s superclass or some ancestor higher up the inheritance line • Once you define a common superclass, polymorphism is just there anything special no need to 11­17 Polymorphism (cont’d) public void step() { for (Actor a : actors) { // only act if another actor hasn't removed a if (a.getGrid() == gr) a.act(); The correct act method is } called automatically for any } specific type of actor 11­18 Interfaces YMCA DancingBug DancingCrab Dance Waltz Conga Maracas Interface 11­19 Interfaces (cont’d) • An interface in Java is like an abstract class, but it does not have any fields or constructors, and all its methods are abstract public interface Dance { String getName (); String getSteps (int m); int[] getBeat (); } • “public abstract” is not written because all the methods are public abstract 11­20 Interfaces (cont’d) • We must “officially” state that a class implements an interface • A concrete class that implements an interface must supply all the methods of that interface public class Waltz implements Dance { public String getName( ) { return "Waltz"; } public String getSteps(int m) { } public int[] getBeat( ) { } } 11­21 Interfaces (cont’d) • A class can implement several interfaces • Like an abstract class, an interface supplies a secondary data type to objects of a class that implements that interface • You can declare variables and parameters of an interface type Dance d = new Waltz( ); • Polymorphism fully applies to objects disguised as interface types 11­22 Interfaces (cont’d) public interface Edible { String getFoodGroup(); int getCaloriesPerServing(); } public class Pancake implements Edible { } public class Breakfast Polymorphism: { the correct private int myTotalCalories = 0; method is called for any specific public void eat (Edible obj, int servings) type of Edible { (e.g., a Pancake) myTotalCalories += obj.getCaloriesPerServing () * servings; } } 11­23 Classes Interfaces Similarities • A superclass provides a secondary data type to objects of its subclasses • An abstract class cannot be instantiated • An interface provides a secondary data type to objects of classes that implement that interface • An interface cannot be instantiated 11­24 Classes Interfaces Similarities • A concrete subclass of an abstract class must define all the inherited abstract methods • A class can extend another class A subclass can add methods and override some of its superclass’s methods • A concrete class that implements an interface must define all the methods specified by the interface • An interface can extend another interface (called its superinterface) by adding declarations of abstract methods 11­25 Classes Interfaces Differences • A class can extend only one class • A class can implement any number of interfaces • A class can have fields • An interface cannot • A class defines its own • An interface has no constructors (or gets a default constructor) have fields (except, possibly, some public static final constants) constructors 11­26 Classes Interfaces Differences • A concrete class has all its methods defined An abstract class usually has one or more abstract methods • Every class is a part of a hierarchy of classes with Object at the top • All methods declared in an interface are abstract • An interface may belong to a small hierarchy of interfaces, but this is not very common 11­27   DanceNumber GridWorld Dance YMCANumber WaltzNumber CongaNumber YMCA Waltz Conga GridWorld’s framework «interface» Dance info.gridworld actor.Actor «Abstract» Dancer LeftShoe RightShoe LeftSandal RightSandal DancingBug DancingCrab Maracas depends on A extends implements B EasySound 11­28 Review • Describe two ways for eliminating duplicate code using class hierarchies • What is an abstract class? • Why is it better to use an abstract method rather than an empty method? • Define concrete class • What happens when a constructor of a subclass does not have a super statement? Is superclass’s constructor called? 11­29 Review (cont’d) • Can an abstract class be instantiated? • Can someMethod1 have a call super.someMethod2 ( )? • What happens if, by mistake, a programmer puts in his paintComponent method a call paintComponent(g); instead of super.paintComponent(g); ? 11­30 Review (cont’d) • What is the main difference between an abstract class and an interface? • Can a class implement several interfaces? • Suppose you declare a variable of an interface type What type of value can be assigned to that variable? • What is the main advantage of interfaces over abstract classes? 11­31 ...Objectives: • Understand class hierarchies and polymorphism • Learn about abstract classes • Learn the syntax for calling superclass’s constructors and methods • Understand interfaces 11? ?2 Inheritance... Subclass (Derived class) • Inheritance represents the IS-A relationship between objects: an object of a subclass IS-A(n) object of the superclass 11? ?3 Class Hierarchies • Using inheritance, a programmer... JMenuItem Window JPanel JButton A fragment of Java library GUI class hierarchy (abstract classes are boxed) 11? ?9 Abstract Classes (cont’d) • Java does not allow us to instantiate (that is,

Ngày đăng: 04/11/2020, 23:16

Mục lục

  • Class Hierarchies (cont’d)

  • Abstract Classes (cont’d)

  • Invoking Superclass’s Constructors

  • Invoking Superclass’s Constructors (cont’d)

  • Calling Superclass’s Methods

  • Calling Superclass’s Methods (cont’d)

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan