Download class A

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
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
class A {
class
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();
}
}
A
A
B
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;}
a
A a = new A();
B b = new B();
b
x
x
y
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;
1
a = b;
1, 2
System.out.println(a.x);
0
}
}
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.awt
java.beans
java.io
java.lang
java.math
java.net
java.rmi
java.security
java.sql
java.util
Package

เราสาืารถใชว class จาก package อ่่นไดว โดยการ import ไเว ที่
ส่เนหัเโปรแลกรื เช่น
import
import
import
import
java.awt.Button;
java.awt.Graphics;
javax.swing.JApplet;
java.awt.*;
Keyword

เราใชว keyword “package” ในการระบุเา่ class ของเราอยู่ใน
package ใด
package myPackage;
public class A {
public void print() {
System.out.println(“This’s class A”);
}
}
จัดเก็บไฟล์ไว้ที่
C:\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 protecte
d
default privat
e
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();}
}
A
B
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();
}
}
1
2
Super Reference


ใชว keyword เ่า “super” แลทน class ที่ inherite เพ่่อใชว ใน
การอว างถึง member ของ super class
ในการอว าง super จะหืายถึงตัเ data member ตัเแลรกที่เจอใน
สายของบรรพบุรุษ เช่น
A
B
C
int x
Ext A
Ext B
int x
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();
}
}
Related documents