Inner Classes. Lecture Objectives Learn about inner classes. Know the differences between static and non- static inner classes. Designing and using inner.

Slides:



Advertisements
Similar presentations
Introduction to classes Sangeetha Parthasarathy 06/11/2001.
Advertisements

Inner Classes. Nested Classes  An nested class is a class that is defined inside another class.  To this point we have only studied top-level classes.
Programming With Java ICS201 University Of Hail1 Chapter 13 Inner Classes.
INHERITANCE BASICS Reusability is achieved by INHERITANCE
METHOD OVERRIDING 1.Sub class can override the methods defined by the super class. 2.Overridden Methods in the sub classes should have same name, same.
Nested Classes Yoshi Modified from:
Unit 08 & 091 Nested Classes Introduction Inner Classes Local Classes Anonymous Classes Exercises.
Programming with Java © 2002 The McGraw-Hill Companies, Inc. All rights reserved. 1 Chapter 12 More OOP, Interfaces, and Inner Classes.
Slides prepared by Rose Williams, Binghamton University Chapter 13 Interfaces and Inner Classes.
Chapter 13 Interfaces and Inner Classes Slides prepared by Rose Williams, Binghamton University Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
Slides prepared by Rose Williams, Binghamton University Chapter 13 Interfaces and Inner Classes.
CS102--Object Oriented Programming Lecture 16: – Inner classes + review Copyright © 2008 Xiaoyan Li.
What is a class? a class definition is a blueprint to build objects its like you use the blueprint for a house to build many houses in the same way you.
1 Inner Classes Overview  Java Inner Classes: A Definition.  Overview of Nested Classes.  Top level Nested Classes.  Non-static Inner Classes.  Non-static.
Unit 081 Introduction to Nested Classes Nested classes are classes defined within other classes The class that includes the nested class is called the.
Slides prepared by Rose Williams, Binghamton University Chapter 13 Interfaces and Inner Classes.
CS102--Object Oriented Programming Lecture 15: Interfaces Copyright © 2008 Xiaoyan Li.
1 Introduction to Searching and Sorting Comparable Interface -Reading p Comparator Interface.
Inner Classes. Inner classes All the classes so far have been “top level” It is possible (and useful) to define a class inside another class Inner classes.
Inner Classes in Java. Overview Inner class – one class nested inside another – static (i.e. class) rarely if ever used – member (i.e. instance) – anonymous.
Lecture From Chapter 6 & /8/10 1 Method of Classes.
CMSC 202 Inner Classes. Aug 7, Simple Uses of Inner Classes Inner classes are classes defined within other classes  The class that includes the.
Programming in Java Unit 2. Class and variable declaration A class is best thought of as a template from which objects are created. You can create many.
Chapter 8: Inner Classes. You're an OO programmer, so you know that for reuse and flexibility/extensibility you need to keep your classes specialized.
Objects and Classes Chapter 6 CSCI CSCI 1302 – Objects and Classes2 Outline Introduction Defining Classes for Objects Constructing Objects Accessing.
Java Interfaces. Interfaces An interface is something like an extreme case of an abstract class – However, an interface is not a class – It is a type.
Comp 249 Programming Methodology Chapter 13 Interfaces & Inner Classes Dr. Aiman Hanna Department of Computer Science & Software Engineering Concordia.
MT311 Java Application Development and Programming Languages Li Tak Sing ( 李德成 )
2-Dec-15 Inner Classes. 2 Inner classes All the classes so far have been “top level” It is possible (and useful) to define a class inside another class.
Java Inner Classes. Interfaces interface KeyListener { public void keyPressed(KeyEvent e); public void keyReleased(KeyEvent e); public void keyTyped(KeyEvent.
2-Dec-15 Inner Classes By Alguien Soy. 2 Inner classes All the classes so far have been “top level” It is possible (and useful) to define a class inside.
UMass Lowell Computer Science Java and Distributed Computing Prof. Karen Daniels Fall, 2000 Lecture 9 Java Fundamentals Objects/ClassesMethods Mon.
SEEM Java – Basic Introduction, Classes and Objects.
Interfaces and Inner Classes
Nested Classes CompSci 230 S Software Construction.
Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All rights reserved. 1 Chapter 15 Event-Driven Programming and.
Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All rights reserved. 1 Chapter 15 Event-Driven Programming and.
Object Oriented Programming in Java Habib Rostami Lecture 10.
Advanced Java class Nested Classes & Interfaces. Types of Nested Classes & Interfaces top-level nested –classes –interfaces inner classes –member –local.
UMass Lowell Computer Science Java and Distributed Computing Prof. Karen Daniels Fall, 2000 Lecture 10 Java Fundamentals Objects/ClassesMethods.
Basic Class Structure. Class vs. Object class - a template for building an object –defines the instance data that the object will hold –defines instance.
Today Enumerated Types - Summary. Start Nested Classes: Inner Classes, Local Classes, Anonymous Classes, Lambda Functions Next: Interfaces, Abstract Classes.
Inner Classes.
Topic: Inner Classes Course : JAVA PROGRAMMING Paper Code: ETCS-307 Faculty : Dr. Prabhjot Kaur Reader, Dept. of IT 1.
Inner Classes 27-Dec-17.
CompSci 230 S Software Construction
Chapter 15 Event-Driven Programming and Animations
Chapter 8 Classes and Objects
CompSci 230 S Programming Techniques
CMPE212 – Stuff… Assn 3 due and Quiz 2 in the lab next week.
Nested class.
Comp 249 Programming Methodology
Interfaces and Inner Classes
Lecture 4-7 Classes and Objects
Inner Classes 11/14/ Dec-04 inner_classes.ppt.
Chapter 15 Event-Driven Programming and Animations
Inner Classes 29-Nov-18.
Interfaces and Inner Classes
Inner Classes.
CMSC 202 Inner Classes.
Java Inner Classes.
CISC124 Assignment 3 sample solution will be posted tonight after 7pm.
Constructors, GUI’s(Using Swing) and ActionListner
Inner Classes 17-Apr-19.
Inner Classes 21-Apr-19.
Inner Classes 1-May-19.
Inner Classes 11-May-19.
Inner Classes 18-May-19.
Inner Classes.
Inner Classes 25-Oct-19.
Presentation transcript:

Inner Classes

Lecture Objectives Learn about inner classes. Know the differences between static and non- static inner classes. Designing and using inner classes. Using local classes. Anonymous inner classes. Using inner classes for event handlers and listeners.

Simple Uses of Inner Classes Inner (or nested) classes are classes defined within other classes:  The class that includes the inner class is called the outer class There are four categories of inner classes in Java: 1.Inner classes (non-static). 2.Static inner classes. 3.Local classes (defined inside a block of Java code). 4.Anonymous classes (defined inside a block of Java code). Used with GUIs

An inner class definition is a member of the outer class in the same way that the instance variables and methods of the outer class are members.  An inner class is local to the outer class definition.  The name of an inner class may be reused for something else outside the outer class definition.  If the inner class is private, then the inner class cannot be accessed by name outside the definition of the outer class. Simple Uses of Inner Classes (Cont’d)

There are two main advantages to inner classes  They can make the outer class more self-contained since they are defined inside a class.  Both of their methods have access to each other's private methods and instance variables. Using an inner class as a helping class is one of the most useful applications of inner classes.  If used as a helping class, an inner class should be marked private. Simple Uses of Inner Classes (Cont’d)

Tip: Inner and Outer Classes Have Access to Each Other's Private Members (as with GUIs) Within the definition of a method of an inner class:  It is legal to reference a private instance variable of the outer class  It is legal to invoke a private method of the outer class. Within the definition of a method of the outer class:  It is legal to reference a private instance variable of the inner class on an object of the inner class.  It is legal to invoke a (non-static) method of the inner class as long as an object of the inner class is used as a calling object. Within the definition of the inner or outer classes, the modifiers public and private are equivalent.

Inner Class: An Example

Inner Class: An Example (Cont’d)

The.class File for an Inner Class Compiling any class in Java produces a.class file named ClassName.class Compiling a class with one (or more) inner classes causes both (or more) classes to be compiled, and produces two (or more).class files  Such as ClassName.class and ClassName$InnerClassName.class

Static Inner Classes A normal inner class has a connection between its objects and the outer class object that created the inner class object.  This allows an inner class definition to reference an instance variable, or invoke a method of the outer class. There are certain situations, however, when an inner class must be static.  If an object of the inner class is created within a static method of the outer class.  If the inner class must have static members.

Since a static inner class has no connection to an object of the outer class, within an inner class method:  Instance variables of the outer class cannot be referenced.  Non-static methods of the outer class cannot be invoked. To invoke a static method or to name a static variable of a static inner class within the outer class, preface each with the name of the inner class and a dot. Static Inner Classes (Cont’d)

Public Inner Classes If an inner class is marked public, then it can be used outside of the outer class In the case of a non-static inner class, it must be created using an object of the outer class BankAccount account = new BankAccount(); BankAccount.Money amount = account.new Money("41.99");  Note that the prefix account. must come before new  The new object amount can now invoke methods from the inner class, but only from the inner class

In the case of a static inner class, the procedure is similar to, but simpler than, that for non-static inner classes: OuterClass.InnerClass innerObject = new OuterClass.InnerClass();  Note that all of the following are acceptable innerObject.nonstaticMethod(); innerObject.staticMethod(); OuterClass.InnerClass.staticMethod(); Public Inner Classes (Cont’d)

Tip: Referring to a Method of the Outer Class If a method is invoked in an inner class  If the inner class has no such method, then it is assumed to be an invocation of the method of that name in the outer class.  If both the inner and outer class have a method with the same name, then it is assumed to be an invocation of the method in the inner class.  If both the inner and outer class have a method with the same name, and the intent is to invoke the method in the outer class, then the following invocation must be used: OuterClassName.this.methodName()  using this inside an inner class refers to the object of the inner class.

Nesting Inner Classes It is legal to nest inner classes within inner classes  The rules are the same as before, but the names get longer.  Given class A, which has public inner class B, which has public inner class C, then the following is valid: A aObject = new A(); A.B bObject = aObject.new B(); A.B.C cObject = bObject.new C();

Inner Classes and Inheritance Given an OuterClass that has an InnerClass  Any DerivedClass of OuterClass will automatically have InnerClass as an inner class.  In this case, the DerivedClass cannot override the InnerClass. An outer class can be a derived class. An inner class can be a derived class also.

Local Classes A local class is defined within a block of Java code. Local classes are completely hidden in their containing block. When a class name is used only within a block it can be defined locally. A local class can access instance variables of the outer class and only the final local variables of the enclosing block.

Local Classes: Example class LocalClassExample{ private String name = "KFUPM"; public void method ( ) { int j = 20; final int k = 30; class Local { public void test ( ) { //System.out.println(j); //Error as j is not final System.out.println(k); //OK k is final //Like an inner class, instance variables of //the enclosing object can be accessed. System.out.println ( name ) ; } Local loc = new Local ( ) ; loc.test ( ) ; } public static void main ( String [ ] args ) { LocalClassExample obj = new LocalClassExample ( ); obj.method ( ) ; }

Anonymous Classes It is a local class without a name. If only one object has to be created from a class, and there is no need to name the class, then an anonymous class definition can be used  The class definition is embedded inside the expression with the new operator Anonymous class has no constructors It is either derived from a class, or implements an interface. Like:  AnInterface i = new AnInterface ( ) { // methods defs. … }  ASuperclass c = new ASuperclass(…) { // methods defs. … }

Listeners as Inner Classes Often, instead of having one action listener object deal with all the action events in a GUI, a separate ActionListener class is created for each button or menu item  Each button or menu item has its own unique action listener.  There is then no need for a multiway if-else statement. When this approach is used, each class is usually made a private inner class

Listeners as Inner Classes: An Example

Listeners as Inner Classes: An Example (Cont’d)