java programming
Post on 14-Jan-2016
129 Views
Preview:
DESCRIPTION
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