25
JAVA PROGRAMMING PART IV

JAVA PROGRAMMING

  • Upload
    wilbur

  • View
    128

  • Download
    0

Embed Size (px)

DESCRIPTION

JAVA PROGRAMMING. PART IV. INHERITANCE. Inheritance is a form of software reusability in which new classes are created from existing classes by absorbing their attributes and behaviors and adding new capabilities the new classes require. - PowerPoint PPT Presentation

Citation preview

Page 1: JAVA  PROGRAMMING

JAVA PROGRAMMING

PART IV

Page 2: JAVA  PROGRAMMING

INHERITANCE

Inheritance is a form of software reusability in which new classes are created from existing classes by absorbing their attributes and behaviors and adding new capabilities the new classes require.

Newly created classes of objects are derived by absorbing characteristics of existing classes and adding unique characteristics of their own

Page 3: JAVA  PROGRAMMING

KEYWORD

Given Class A, and we want to define class B that derive from Class A we used keyword “extends” as

Class B extends A { //definition of class B}

Page 4: JAVA  PROGRAMMING

Super class & Sub Class

Class A : parent class/base class/super class

Class B : child class/extended class/sub classclass A { void printA() {System.out.println(‘A’);}}class B extends A { void printB() {System.out.println(‘B’);}}

Page 5: JAVA  PROGRAMMING

Relationship

Sub Classes inherit all member (data&method) from its Super Class except The private member of Super Class Constructor of Super Class

class InheritTest1 { public static void main(String args[]) { A x = new A(); x.printA(); B y = new B(); y.printA(); y.printB(); }}

AAB

Page 6: JAVA  PROGRAMMING

KEYWORD “FINAL”

For break extends class

class A { int a = 1;}class B extends A { int b = 2; }final class C extends B { int c = 3; }class Inherit2 { public static void main(String args[]){ C z = new C(); System.out.println(z.a+z.b+z.c); }}

6

Page 7: JAVA  PROGRAMMING

REFERENCE

class A {int x;}class B {int y;}

x x y

a b

A a = new A();B b = new B();

Page 8: JAVA  PROGRAMMING

Try it!

class A { int x = 1;}class B extends A { int y = 2; }class Inherit3 { public static void main(String args[]) { A a = new A(); System.out.println(a.x); B b = new B(); System.out.println(b.x + “,” + b.y); b.x--; // b = a; a = b; System.out.println(a.x); }}

11, 20

Page 9: JAVA  PROGRAMMING

Package

class โดยปรกติ�จะจ�ดเก บติ�อหนึ่��งไฟล์� .class อย��แล์�ว เมื่��อติอนึ่ compile โปรแกรมื่

เป นึ่แหล์�งจ�ดเก บ class ติ�าง ๆ ที่$�เก$�ยวข้�องก�นึ่ไว�ที่$�เด$ยวก�นึ่

ในึ่ package หนึ่��งสามื่ารถมื่$ class ไมื่�จ)าก�ด ในึ่ package สามื่ารถมื่$ subpackage อ$กเที่�าใดก ได�

ปรกติ�ที่$�เราจ�ดเก บไฟล์�จาวาไว�ในึ่ ไดเรกที่อร$� Myjava ด�งนึ่�*นึ่เร$ยกได�ว�าไฟล์�

ได�อย��ในึ่ package Myjava

Page 10: JAVA  PROGRAMMING

Packages

Standard Packages ในึ่ JDK 1.2.x อย��ในึ่ไฟล์�rt.jar แล์ะ i18n.jar ซึ่��งอย��ในึ่ C:\JDK1.2x\JRE\LIB

java.applet java.netjava.awt java.rmijava.beans java.securityjava.io java.sqljava.lang java.utiljava.math

Page 11: JAVA  PROGRAMMING

Package

เราสามื่ารถใช้� class จาก package อ��นึ่ได�โดยการimport ไว�ที่$�ส�วนึ่ห�วโปรแกรมื่ เช้�นึ่

import java.awt.Button;import java.awt.Graphics;import javax.swing.JApplet;import java.awt.*;

Page 12: JAVA  PROGRAMMING

Keyword

เราใช้� keyword “package” ในึ่การระบ-ว�า class ข้องเรา อย��ในึ่ package ใด

package myPackage;public class A { public void print() { System.out.println(“This’s class A”); }}

จ�ดเก บไฟล์�ไว�ที่$� C:\Myjava\myPackageC:\Myjava\myPackage

Page 13: JAVA  PROGRAMMING

Package

สามื่ารถเร$ยกใช้� class A ได� 2 แบบ คื�อ

class PackageTest1{ public static void main(String args[]){ new myPackage.A().print(); }}

import myPackage.A;class PackageTest2{ public static void main(String args[]){ new A().print(); }}

Page 14: JAVA  PROGRAMMING

Scope of Visibility in Extended Classes

Accessible to public protected

default private

Same class, Same Package ☺ ☺ ☺ ☺Sub class, Same package

Other class, Same package☺ ☺ ☺ ☻

Sub class, Other package ☺ ☺ ☻ ☻Other class, Other package ☺ ☻ ☻ ☻

Page 15: JAVA  PROGRAMMING

Same Class, Same Package

package p1;Class One { public String pub = “pub”; protected String pro = “pro”; String def = “def”; private String pri = “pri”; public void print() { System.out.println(pub+pro+def+pri); }}

Page 16: JAVA  PROGRAMMING

Sub Class, Same Package

package p1;Class SubCsameP extends One { public void print() { System.out.println(pub+pro+def); }}

Page 17: JAVA  PROGRAMMING

Other Class, Same Package

package p1;Class OtherCsameP extends One { public void print() { One o = new One(); System.out.println(o.pub+o.pro+o.def); }}

Page 18: JAVA  PROGRAMMING

Sub Class, Other Package

package p1;Class SubCotherP extends p1.One { public void print() { System.out.println(pub+pro); }}

Page 19: JAVA  PROGRAMMING

Other Class, Other Package

package p1;Class OtherCotherP { public void print() { p1.One o = new p1.One(); System.out.println(o.pub); }}

Page 20: JAVA  PROGRAMMING

Constructor Chaining

เมื่��อมื่$การสร�าง instance ข้องคืล์าสล์�กข้�*นึ่constructors ข้องคืล์าสบรรพบ-ร-ษที่�*งฟมื่ก จะถ�กที่)างานึ่

class A {A() {System.out.println(“A”);}}class B extends A { B() {System.out.println(“B”);}}Class ConstructorChain { public static void main(String args[]) { new B();}}

AB

Page 21: JAVA  PROGRAMMING

Super Reference

class A { int a; void print() { System.out.println(a);}}class B extends A { int a; B(int x, int y){super.a = x; this.a = y;} void print() { super.print(); System.out.println(a);}}class Super1{ public static void main(String args[]){ B b = new B(1,2); b.print(); }}

12

Page 22: JAVA  PROGRAMMING

Super Reference

ใช้� keyword “ว�า super” แที่นึ่ class ที่$� inherite เพ��อใช้�ในึ่การอ�างถ�ง member ข้อง super class

ในึ่การอ�าง super จะหมื่ายถ�งติ�ว data member ติ�ว แรกที่$�เจอในึ่สายข้องบรรพบ-ร-ษ เช้�นึ่

A B C

int xint x

Ext A Ext B

Super.x

This.x

Page 23: JAVA  PROGRAMMING

Super Constructors

class A { A() { System.out.println(‘A’);} A(char c) { System.out.println(c); }}class B extends A { B() { // super(‘a’); System.out.println(‘B’); }}class SuperConstructor { public static void main(String args[]){new B();}}

Page 24: JAVA  PROGRAMMING

Shadowing

ถ�าเราก)าหนึ่ด data member ในึ่คืล์าสล์�กมื่$ช้��อเหมื่�อนึ่ ก�บ data member ในึ่คืล์าสแมื่� ช้��อข้องล์�กจะ

บ�ง(shadow)ช้��อในึ่คืล์าสแมื่�

class A {int x = 1;}class B extends A {float x = 2.0f;}class shadowing { public static void main(String args[]) { B b = new B(); System.oout.println(b.x); }}

Page 25: JAVA  PROGRAMMING

overriding

ถ�าเราก)าหนึ่ด method ในึ่คืล์าสล์�กมื่$ signature เหมื่�อนึ่ก�บ method ในึ่คืล์าสแมื่� พฤติ�กรรมื่ข้องล์�กจะ

ล์บล์�าง(override)พฤติ�กรรมื่ในึ่คืล์าสแมื่�

class A {void print() {print.out.println(‘A’);}}class B extends A { void print() {print.out.println(‘B’);}class Overriding { public static void main(String args[]) { new B().print(); }}