java programming

Post on 14-Jan-2016

129 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

TRANSCRIPT

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.

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

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}

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’);}}

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

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

REFERENCE

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

x x y

a b

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

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

Package

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

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

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

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

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

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

Package

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

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

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

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(); }}

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 ☺ ☻ ☻ ☻

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); }}

Sub Class, Same Package

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

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); }}

Sub Class, Other Package

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

Other Class, Other Package

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

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

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

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

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();}}

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); }}

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(); }}

top related