際際滷

際際滷Share a Scribd company logo
仍舒 亳 仄亠仂亟
仗亳舒仆亳亠 从仍舒舒
<仄仂亟亳亳从舒仂> class <仄仍舒舒>
{[仄仂亟亳亳从舒仂] <亳仗> <仗亠亠仄亠仆仆舒_从亰亠仄仗仍舒1>;

[仄仂亟亳亳从舒仂] <亳仗> <仗亠亠仄亠仆仆舒_从亰亠仄仗仍舒N>;
[仄仂亟亳亳从舒仂] <亳仗> <仄亠仂亟_从仍舒舒1>(<仗亳仂从 仂仄. 仗舒舒仄.)
{ // 亠仍仂 仄亠仂亟舒; }

[仄仂亟亳亳从舒仂] <亳仗> <仄亠仂亟_从仍舒舒>(<仗亳仂从 仂仄.仗舒舒仄.>)
{ // 亠仍仂 仄亠仂亟舒; }
}
1
仍舒 亳 仄亠仂亟
仗亳舒仆亳亠 从仍舒舒
class Point
{int x, y;
Point ()

亅从亰亠仄仗仍仆亠 仗亠亠仄亠仆仆亠
(instance variables)

{x=0; y=0;
}
Point (int x1,int y1)

仂仆从仂
丼仍亠仆 从仍舒舒 (class
(仗亠亠亞亢亠仆仆亠)
members)

{x=x1; y=y1;
}
int getX() {return x;}
int getY() {return y;}
}

亠仂亟 从仍舒舒 (methods)

2
仍舒 亳 仄亠仂亟
弌仂亰亟舒仆亳亠 仍仂仆 仗亠亠仄亠仆仆
亳 仂弍亠从仂于 从仍舒舒
Point p1;

仂亰亟舒仆舒 仍仂仆舒 仗亠亠仄亠仆仆舒

p1 = new Point();
Point p2 = new Point();
Point p3 = p1;
p1

仂亰亟舒仆 仂弍亠从
束从仂仂从舒 仂仄舒損
仂亰亟舒仆亳 仂弍亠从舒
仂亰亟舒仆舒 仍仂仆舒 仗亠亠仄亠仆仆舒
从舒亰于舒ム舒 仆舒 p1

仂弍亠从

p3 c仍从舒 仆舒 p1
3
仍舒 亳 仄亠仂亟
弌仂亰亟舒仆亳亠 仍仂仆 仗亠亠仄亠仆仆
亳 仂弍亠从仂于 从仍舒舒

Cannot find variable p1
Point p1;
{ p1 = new Point(5,10);
p1 = null;
}
System.out.println(p1.x + "" + p1.y);

5, 10

{Point p1 = new Point(5,10);
}
System.out.println(p1.x + "" + p1.y);

NullPointerException
Point p2;
{Point p1 = new Point(5,10);
p2 = p1;
p1 = null;
}
System.out.println(p2.x + ,  + p2.y);
4
仍舒 亳 仄亠仂亟
亠亠亞亰从舒 (overloading) 仄亠仂亟仂于
[仄仂亟亳亳从舒仂] <亳仗> <亳仄_仄亠仂亟舒> (<仗亳仂从 仂仄. 仗舒舒仄.)
亳亞仆舒舒 仄亠仂亟舒
亠亠亞亰从舒  仂亰亟舒仆亳亠 2 亳 弍仂仍亠亠 仄亠仂亟仂于  仂亟亳仆舒从仂于仄亳
亳仄亠仆舒仄亳 仆仂 舒亰仆仄亳 亳亞仆舒舒仄亳

5
仍舒 亳 仄亠仂亟
亠亠亞亰从舒 (overloading) 仄亠仂亟仂于
class OverloadDemo
{void test()
{System.out.println(舒舒仄亠 仂于ム);
}
void test(int a, int b)
{System.out.println(a 亳 b: + a +   + b);
}
void test(double a)
{System.out.println(亠亠于亠仆仆仂亠 a: + a);
}
}

6
仍舒 亳 仄亠仂亟
仂亟亳亳从舒仂 static
弌舒亳亠从亳亠 仗亠亠仄亠仆仆亠
弍磦仍亠仆亳亠: static <type> <name>
弍舒亠仆亳亠: <classname>.<varname>
弌舒亳亠从亳亠 仗亠亠仄亠仆仆亠:


仂亰亟舒ム 于 亠亟亳仆于亠仆仆仂仄 从亰亠仄仗仍亠



亠于ム 于仆亠 亰舒于亳亳仄仂亳 仂 仂弍亠从仂于 从仍舒舒



仂亰亟舒ム JVM 于 仄仂仄亠仆 仗亠于仂亞仂 仂弍舒亠仆亳 从
从仍舒



亟仂仗从舒ム 仂弍舒亠仆亳亠 亟仂 仂亰亟舒仆亳 仂弍亠从仂于
从仍舒舒
7
仍舒 亳 仄亠仂亟
仂亟亳亳从舒仂 static
弌舒亳亠从亳亠 仄亠仂亟
弍磦仍亠仆亳亠: static <type> <name> (<parameters>)
弍舒亠仆亳亠: <classname>.<metodname>()
弌舒亳亠从亳亠 仄亠仂亟:


仄仂亞 于亰于舒 仂仍从仂 亟亞亳亠 舒亳亠从亳亠
仄亠仂亟 亟舒仆仆仂亞仂 从仍舒舒



亟仂仍亢仆 仂弍舒舒 仂仍从仂 从 舒亳亠从亳仄
仗亠亠仄亠仆仆仄



于仆亳 舒亳亠从亳 仄亠仂亟仂于 仆亠仍亰
亳仗仂仍亰仂于舒 仍从亳 this 亳 super
8
仍舒 亳 仄亠仂亟
仂亟亳亳从舒仂 static
弌舒亳亠从亳亠 弍仍仂从亳 从仂亟舒
弍磦仍亠仆亳亠:
static
{

}
弌舒亳亠从亳亶 弍仍仂从 从仂亟舒 于仗仂仍仆磳 仂亟亳仆 舒亰 仗亳
仗亠于仂仆舒舒仍仆仂亶 亰舒亞亰从亠 从仍舒舒

9
仍舒 亳 仄亠仂亟
仗仂仍亰仂于舒仆亳亠 从仍ム亠于仂亞仂 仍仂于舒 this
1. 丼仂弍 仂弍仂亶亳 从亳亠 仗亠亠仄亠仆仆仂亶
从亰亠仄仗仍舒 仂仄舒仍仆仄亳 仗舒舒仄亠舒仄亳
Class Point
{

int x, y;
Point (int x, int y)
{this.x=x;
this.y=y;
}

}
10
仍舒 亳 仄亠仂亟
仗仂仍亰仂于舒仆亳亠 从仍ム亠于仂亞仂 仍仂于舒 this
2. 丼仂弍 于亰于舒 仂亟亳仆 从仂仆从仂 亳亰 亟亞仂亞仂
从仂仆从仂舒 (explicit constructor invocation)
public class Rectangle
{private int x, y, w, h;
public Rectangle()
{this.x = 0; this.y = 0; this.w = 0; this.h = 0;}
public Rectangle(int w, int h)
{this.x = 0; this.y = 0; this.w = w; this.h = h;}
public Rectangle(int x, int y, int w, int h)
{this.x = x; this.y = y; this.w = w; this.h = h; }
}

11
仍舒 亳 仄亠仂亟
仗仂仍亰仂于舒仆亳亠 从仍ム亠于仂亞仂 仍仂于舒 this
2. 丼仂弍 于亰于舒 仂亟亳仆 从仂仆从仂 亳亰 亟亞仂亞仂
从仂仆从仂舒 (explicit constructor invocation)
public class Rectangle
{private int x, y, w, h;
public Rectangle()
{this(0, 0, 0, 0);}
public Rectangle(int w, int h)
{this(0, 0, w, h);}
public Rectangle(int x, int y, int w, int h)
{this.x = x; this.y = y; this.w = w; this.h = h; }
}

12
仍舒 亳 仄亠仂亟
仍仂亢亠仆仆亠 从仍舒
仍仂亢亠仆仆亠
从仍舒

弌舒亳亠从亳亠
于仍仂亢亠仆仆亠 从仍舒

亠舒亳亠从亳亠
于仍仂亢亠仆仆亠 从仍舒

(static nested classes)

(inner classes 于仆亠仆仆亳亠 从仍舒)
亳亳仆 仂亰亟舒仆亳 于仍仂亢亠仆仆 从仍舒仂于:
1.仂亞亳亠从舒 亞仗仗亳仂于从舒 从仍舒仂于
2.舒亳磳 于仂亰仄仂亢仆仂亳 亳仆从舒仗仍亳亳
3. 仆亠从仂仂 仍舒 仗仂于舒亠 亳舒弍亠仍仆仂 从仂亟舒
13
仍舒 亳 仄亠仂亟
弌舒亳亠从亳亠 于仍仂亢亠仆仆亠 从仍舒
弌舒亳亠从亳亶 于仍仂亢亠仆仆亶 从仍舒 磦仍磳
舒亳亠从亳仄 仍亠仆仂仄 从仍舒舒, 于 从仂仂亶 仂仆
于仍仂亢亠仆. 丐.亠. 仂仆 仆亠 仄仂亢亠 仆舒仗礆
舒弍仂舒  仆亠舒亳亠从亳仄亳 仗亠亠仄亠仆仆仄亳 亳
仄亠仂亟舒仄亳 于仆亠仆亠亞仂 从仍舒舒.

14
仍舒 亳 仄亠仂亟
弌舒亳亠从亳亠 于仍仂亢亠仆仆亠 从仍舒
class A {
static int x;
int y;
A()
{ System.out.println("constructor A"); }
static class B
{B()
{ System.out.println("constrcutor B");
x = 5;
public class Test {
A a = new A();
public static void main(String[ ] args)
a.y = 15;
{
}
A.B b = new A.B();
}
}
}
}
15
仍舒 亳 仄亠仂亟
亠舒亳亠从亳亠 于仍仂亢亠仆仆亠 从仍舒
亠舒亳亠从亳亶 于仍仂亢亠仆仆亶 从仍舒 磦仍磳
仂弍仆仄 仍亠仆仂仄 于仆亠仆亠亞仂 从仍舒舒, .亠.
亠于亠 仂仍从仂 于 仂舒于亠 仂弍亠从舒
于仆亠仆亠亞仂 从仍舒舒 亳 亳仄亠亠 仗礆仂亶 亟仂仗 从
仗亠亠仄亠仆仆仄 亳 仄亠仂亟舒仄 于仆亠仆亠亞仂 从仍舒舒.
弍亠从 于仍仂亢亠仆仆仂亞仂 从仍舒舒
仄仂亢亠 亠于仂于舒 仂仍从仂
于仆亳 仂弍亠从舒 于仆亠仆亠亞仂
从仍舒舒
弌亠于ム (亳 亟仂于仂仍仆仂 舒仂
亳仗仂仍亰ム) 舒从亢亠 舒仆仂仆亳仄仆亠
于仆亠仆仆亳亠 从仍舒 (舒仄仂亳仄 于
仂弍舒弍仂从亠 仂弍亳亶)
16
仍舒 亳 仄亠仂亟
亠舒亳亠从亳亠 于仍仂亢亠仆仆亠 从仍舒
class A {
static int x;
int y;
A()
{ System.out.println("constructor A"); }
class B {
B()
{ System.out.println("constrcutor B");
x = 5;
public class Test {
y = 15;
public static void main(String[ ] args)
}
{
A a = new A();
}
A.B b = a.new B();
}
}
}

17
仍舒 亳 仄亠仂亟
舒仍亠亟仂于舒仆亳亠
弍舒 仂仄舒 仂弍磦仍亠仆亳 从仍舒舒, 仆舒仍亠亟ム亠亞仂
仗亠从仍舒:
class <subclass_name> extends <superclass_name>
{
//亠仍仂 从仍舒舒
}
亊亰从 Java 仆亠 仗仂亟亟亠亢亳于舒亠 仄仆仂亢亠于亠仆仆仂亞仂
仆舒仍亠亟仂于舒仆亳 从仍舒仂于!!!
18
仍舒 亳 仄亠仂亟
舒仍亠亟仂于舒仆亳亠
class Point3D extends Point
{int z;
Point3D ()
{ z=0; }
Point3D (int x1, int y1, int z1)
{ z=z1; }
}

19
仍舒 亳 仄亠仂亟
仂磲仂从 于亰仂于舒 从仂仆从仂仂于 仗亳
仆舒仍亠亟仂于舒仆亳亳
亳 仂亰亟舒仆亳亳 仂弍亠从舒 仗仂亟从仍舒舒 于亠亞亟舒 于亰于舒亠
从仂仆从仂 亠亞仂 弍舒亰仂于仂亞仂 从仍舒舒,  仂亞仂 从仂仆从仂
亠亞仂 弍舒亰仂于仂亞仂 从仍舒舒 亳 .亟. 于仗仍仂 亟仂 从仂仆 亳亠舒亳亳
(从仍舒舒 Object). 亳亠仄 亠仍亳 仆亠 从舒亰舒仆仂 磦仆仂 (
仗仂仄仂 super) 于亰于舒亠 从仂仆从仂 弍亠亰
仗舒舒仄亠仂于 (仂亰亟舒仆仆亶 磦仆仂 亳仍亳 仗仂 仄仂仍舒仆亳).
仍亳
仗仂亟仂亟亠亞仂 从仂仆从仂舒 仆亠  于亟舒亠 仂亳弍从舒
从仂仄仗亳仍亳亳.

20
仍舒 亳 仄亠仂亟
仍ム亠于仂亠 仍仂于仂 super
1. 亰仂于 从仂仆从仂舒 仆亠仗仂亠亟于亠仆仆仂亞仂 仗亠从仍舒舒
super (parameters)  于亰仂于 亟仂仍亢亠仆 弍 仗亠于仄
于 从仂仆从仂亠 仗仂亟从仍舒舒
仆亳仄舒仆亳亠! 亅仂 仗亳仄亠仆磳 仂仍从仂 亠仍亳 仆舒亟仂
于亰于舒 从仂仆从仂 仗亠从仍舒舒  仗舒舒仄亠舒仄亳!
2.

仂仗 从 仍亠仄亠仆 仗亠从仍舒舒, 从仂仄
仍亠仄亠仆仂仄 仗仂亟从仍舒舒
super.var_name 亳仍亳 super.metod_name()
(super 仆亠 于仍亳磳 仆舒 亳仗 亟仂仗舒)
21
仍舒 亳 仄亠仂亟
仂磲仂从 于亰仂于舒 从仂仆从仂仂于 仗亳
仆舒仍亠亟仂于舒仆亳亳 弍亠亰 亳仗仂仍亰仂于舒仆亳 super
class Point3D extends Point
{int z;
Point3D ()
{ z=0; }
Point3D (int x1,int y1, int z1)
{ z=z1; }

Point3D p3d = new Point3D();
Point() -> Point3D()
Point3D p3d = new Point3D(10, 20, 30);
Point() -> Point3D(10,20,30)

}

22
仍舒 亳 仄亠仂亟
仂磲仂从 于亰仂于舒 从仂仆从仂仂于 仗亳
仆舒仍亠亟仂于舒仆亳亳  亳仗仂仍亰仂于舒仆亳亠仄
super
class Point3D extends Point
{int z;
Point3D ()
{ z=0; }
Point3D (int x1,int y1, int z1)
{ super (x1, y1);

Point3D p3d = new Point3D();
Point() -> Point3D()
Point3D p3d = new Point3D(10, 20, 30);
Point(10, 20) -> Point3D(10,20,30)

z=z1; }
}
23
仍舒 亳 仄亠仂亟
仂亟亳亳从舒仂 亟仂仗舒
class Parent

class Other

{public int v1;

{

private int v2;

// 亟仂仗仆 v1, v3, v4

protected int v3; class Child

// 仆亠亟仂仗仆舒 v2

int v4;

extends Parent

}

{

}

// 亟仂仗仆 v1, v3, v4
// 仆亠亟仂仗仆舒 v2
}
24
仍舒 亳 仄亠仂亟
仂亟亳亳从舒仂 亟仂仗舒
 仗舒于亳仍仆仂 仗仂亠从亳仂于舒仆仆仂仄 Java从仍舒亠, 于亠 从亰亠仄仗仍仆亠
仗亠亠仄亠仆仆亠 从仍舒舒 亟仂仍亢仆 亳仄亠
仄仂亟亳亳从舒仂 private, 亟仂仗 亟仂仍亢亠仆
仂亠于仍 亠亠亰 set/get 仄亠仂亟
(束亠亠/亞亠亠損)
 Eclipse:
Source -> generate Getters and Setters

25
仍舒 亳 仄亠仂亟
仂亟亳亳从舒仂 亟仂仗舒
class Point
{private int x, y;
class Point
{int x, y;
Point ()
{x=0; y=0; }
Point (int x1,int y1)

Point () {x=0; y=0; }
Point (int x1,int y1) {x=x1; y=y1; }
public int getX() {return x;}
public int getY() {return y;}
public int setX(int x) {
this.x = x;}

{x=x1; y=y1; }
}

public int setY(int y) {
this.y = y;}
}
26
仍舒 亳 仄亠仂亟
亳仆舒仄亳亠从舒
亟亳仗亠亠亳亰舒亳 仍仂从
弌仍仂仆仂亶 仗亠亠仄亠仆仆仂亶 仗亠从仍舒舒 仄仂亢亠 弍
仆舒亰仆舒亠仆舒 仍从舒 仆舒 仍ミ頴笑 仗仂亟从仍舒, 仗仂亳亰于仂亟仆亶
仂 仂亞仂 仗亠从仍舒舒. 仍亳 仍仂仆舒 仗亠亠仄亠仆仆舒
仗亠从仍舒舒 从舒亰于舒亠 仆舒 仂弍亠从 仗仂亟从仍舒舒, 亠亠亰
 仗亠亠仄亠仆仆 仄仂亢仆仂 仗仂仍亳 亟仂仗 仂仍从仂 从 亠仄
仍亠仆舒仄 仗仂亟从仍舒舒, 从仂仂亠 仂仗亠亟亠仍ム 于
仗亠从仍舒亠.

27
仍舒 亳 仄亠仂亟
亳仆舒仄亳亠从舒
亟亳仗亠亠亳亰舒亳 仍仂从
class Point

Point Pobj = new Point();

{
int x, int y;

Point3D Cobj = new Point3D();
Pobj = Cobj;

}
class Point3D extends Point
{
int z;
}



Pobj.x = 1; //于亠仆仂! x 仂仗亠亟亠仍亠仆舒 于
Point
Pobj.z = 10; //仂亳弍从舒! z 仆亠
仂仗亠亟亠仍亠仆舒 于 Point

28
仍舒 亳 仄亠仂亟
亳仆舒仄亳亠从舒
亟亳仗亠亠亳亰舒亳 仄亠仂亟仂于
亠亠仂仗亠亟亠仍亠仆亳亠 仄亠仂亟舒 (overriding)  仂亰亟舒仆亳亠 于 仗仂亟从仍舒亠
仄亠仂亟舒, 仂于仗舒亟舒ム亠亞仂 仗仂 亳亞仆舒亠  仄亠仂亟仂仄 仗亠从仍舒舒.
亳仆舒仄亳亠从舒 亟亳仗亠亠亳亰舒亳 仄亠仂亟仂于  仂 仄亠舒仆亳亰仄,
仗仂亰于仂仍ム亳亶 仂仗亠亟亠仍亳 从舒从仂亶 亳亰 仗亠亠仂仗亠亟亠仍亠仆仆
仄亠仂亟仂于 仆亢仆仂 于亰于舒, 于仂 于亠仄 于仗仂仍仆亠仆亳,
舒 仆亠 于仂 于亠仄 从仂仄仗亳仍亳亳.

29
仍舒 亳 仄亠仂亟
亳仆舒仄亳亠从舒
亟亳仗亠亠亳亰舒亳 仄亠仂亟仂于
class Figure

class Rectangle extends Figure

{double dim1, dim2;

{Rectangle(double a, double b)

Figure(double a, double b)

{super(a,b); }

{dim1 = a; dim2 = b; }

void square()

void square()
{System.out.println (Square
is not defined); }

{System.out.println(Rectangle
square =  + (dim1*dim2)); }
}

}
30
仍舒 亳 仄亠仂亟
亳仆舒仄亳亠从舒
亟亳仗亠亠亳亰舒亳 仄亠仂亟仂于
class Triangle extends Figure
{Triangle(double a, double b)
{super(a,b); }
void square()
{System.out.println(Trian
gle square=  +
(dim1*dim2/2)); }
}

class FindSquare
{public static void main(String args[ ])
{Figure f;
Random r = new Random();
for (int k=0; k<10; k++) {
int i = r.nextInt(100);
if (i<50)
{ f = new Rectangle(9,5); }
else
{ f = new Triangle(10,8); }
f.square(); }
} }
31
仍舒 亳 仄亠仂亟
亳仆舒仄亳亠从舒
亟亳仗亠亠亳亰舒亳 仄亠仂亟仂于
于仂亟 仂亶 仗仂亞舒仄仄:

Rectangle square = 45.0
Triangle square= 40.0
Rectangle square = 45.0
Rectangle square = 45.0
Triangle square= 40.0
Triangle square= 40.0
Rectangle square = 45.0
Rectangle square = 45.0
Triangle square= 40.0
Rectangle square = 45.0
32
仍舒 亳 仄亠仂亟
弍舒从仆亠 仄亠仂亟 亳 从仍舒
弍磦仍亠仆亳亠 舒弍舒从仆仂亞仂 仄亠仂亟舒:
abstract <type> <method_name> (<parameters>);
仍亳 于 从仍舒亠 亠 仂 弍 仂亟亳仆 舒弍舒从仆亶 仄亠仂亟 ->
从仍舒 亟仂仍亢亠仆 弍 仂弍磦仍亠仆 舒弍舒从仆仄.
abstract class <class_name>
{

}
ミ頴笑 仗仂亟从仍舒 舒弍舒从仆仂亞仂 从仍舒舒 亟仂仍亢亠仆 亳仍亳 亠舒仍亳亰仂于舒
于亠 亠亞仂 舒弍舒从仆亠 仄亠仂亟 亳仍亳 舒仄 亟仂仍亢亠仆 弍 仂弍磦仍亠仆
舒弍舒从仆仄 !
33
仍舒 亳 仄亠仂亟
弍舒从仆亠 仄亠仂亟 亳 从仍舒
abstract class Figure
{double dim1, dim2;
Figure(double a, double b)
{dim1 = a;
dim2 = b;
}
abstract void square();
}

34
仆亠亠亶
[<仄仂亟亳亳从舒仂>] interface <亳仄> [extends
<仗亳仂从 亳仆亠亠亶仂于>]
{ <亳仗> <亳仄_仄亠仂亟舒>(<仗亳仂从
仗舒舒仄亠仂于>);
...
<亳仗> <亳仄_从仂仆舒仆> = <亰仆舒亠仆亳亠>;
}
1. 仆亠亠亶 亟仂仗从舒ム 仄仆仂亢亠于亠仆仆仂亠 仆舒仍亠亟仂于舒仆亳亠
2. 亠 仄亠仂亟  舒弍舒从仆亠 (弍亠亰 仄仂亟亳亳从舒仂舒 abstract)
3. 亠 仗亠亠仄亠仆仆亠  static 亳 final (弍亠亰 仂仂于.
仄仂亟亳亳从舒仂仂于), 仆亠仂弍仂亟亳仄舒 亳仆亳亳舒仍亳亰舒亳
4. 亠 仗亠亠仄亠仆仆亠 亳 仄亠仂亟  public (弍亠亰 仄仂亟亳亳从舒仂舒)
35
仆亠亠亶
亠舒仍亳亰舒亳 亳仆亠亠亶仂于
class <亳仄_从仍舒舒> [extends <亳仄_仗亠从仍舒舒>]
[implements <仗亳仂从 亳仆亠亠亶仂于>]
{ }
interface Callback
{void callback(int param);
}
class Client implements Callback
{public void callback(int p)
{System.out.println("callback called with " + p); }
}
36
仆亠亠亶
亠舒仍亳亰舒亳 亳仆亠亠亶仂于

仂弍亠仆仆仂亳 亠舒仍亳亰舒亳亳 亳仆亠亠亶仂于:
1. 亠仂亟, 从仂仂亠 亠舒仍亳亰ム 亳仆亠亠亶, 亟仂仍亢仆 弍
仂弍磦仍亠仆 从舒从 public. 弌亳亞仆舒舒 亳仗舒 亠舒仍亳亰ム亠亞仂 仄亠仂亟舒
亟仂仍亢仆舒 仂仆仂 仂仂于亠于仂于舒 亳亞仆舒亠 亳仗舒, 从舒亰舒仆仆仂亶 于
仂仗亠亟亠仍亠仆亳亳 亳仆亠亠亶舒.
2. 仍亳 从仍舒 于从仍ム舒亠 亳仆亠亠亶, 仆仂 亠舒仍亳亰亠 仆亠 于亠 亠亞仂
仄亠仂亟, 仂 舒从仂亶 从仍舒 亟仂仍亢亠仆 弍 仂弍磦仍亠仆 从舒从
舒弍舒从仆亶.
3. 仍亳 从仍舒 亠舒仍亳亰亠 亳仆亠亠亶, 仆舒仍亠亟仂于舒仆仆亶 仂 亟亞仂亞仂
亳仆亠亠亶舒, 从仍舒 亟仂仍亢亠仆 亠舒仍亳亰仂于舒 于亠 仄亠仂亟,
仂仗亠亟亠仍亠仆仆亠 于 亠仗仂从亠 仆舒仍亠亟仂于舒仆亳 亳仆亠亠亶仂于.
37
仆亠亠亶
弌仍仂仆亠 仗亠亠仄亠仆仆亠
亳仆亠亠亶仆仂亞仂 亳仗舒
interface Callback
{void callback(int param);
}
class Client implements Callback
{ public void callback(int p) //亠舒仍亳亰舒亳 仄亠仂亟舒
亳仆亠亠亶舒
{System.out.println("callback called with " + p);}
int getSquare(int p) //仂弍于亠仆仆亶 仄亠仂亟 从仍舒舒
{System.out.println("square = " + (p*p));}
}

38
仆亠亠亶
弌仍仂仆亠 仗亠亠仄亠仆仆亠
亳仆亠亠亶仆仂亞仂 亳仗舒
class TestIface
{public static void main(String args[ ])
{Callback  = new Client();
c.callback(42); //于亠仆仂!
c.getSquare(42); //仂亳弍从舒! 仍仂仆舒
仗亠亠仄亠仆仆舒 亳仆亠亠亶仆仂亞仂 亳仗舒 仆亠 仄仂亢亠
仂弍舒舒 从 仂弍于亠仆仆仄 仄亠仂亟舒仄
从仍舒仂于
}
}
39
仆亠亠亶
亰舒亳仄仂仂仆仂亠仆亳 从仍舒仂于 亳
亳仆亠亠亶仂于
仍舒

仆亠亠亶
implements

C1

I1

extends

C2

C3

extends
implements

extends

C4

C5 C6 C7

I2

I3
extends

I4

I5 I6

I7

extends

I8
40
仍舒 亳 仄亠仂亟
仂亟亳亳从舒仂 final
1. final double pi = 3.14; //仆亠亳亰仄亠仆磳仄舒
仍仂从舒仍仆舒 仗亠亠仄亠仆仆舒
2. final int getX()
{}
//仄亠仂亟, 亟仍 从仂仂仂亞仂 亰舒仗亠亠仆仂
仗亠亠仂仗亠亟亠仍亠仆亳亠 (overriding)
3. final class A
{}
//从仍舒, 亟仍 从仂仂仂亞仂 亰舒仗亠亠仆仂
仆舒仍亠亟仂于舒仆亳亠
41
仍舒 亳 仄亠仂亟
class A {

final-仍亠仆 从仍舒仂于,
仆亠亳亰仄亠仆磳仄亠 仂弍亠从

final String mName;
public A(String name) {
mName = name;

亠亳仄亠于舒

}

仆亠亳亰仄亠仆磳仄 仂弍亠从仂于:

public getName() {

1) 仂仂从仂弍亠亰仂仗舒仆仂 !

return mName;

2) 仂亳亰于仂亟亳亠仍仆仂 !

}
public setK(String name) {
mName = name;
}
}

42
仍舒 亳 仄亠仂亟
亠亠亳仍亠仆亳 于 Java: enum
enum Season
{ WINTER, SPRING, SUMMER, AUTUMN }

Season season = Season.SPRING;
if (season == Season.SPRING) {
season = Season.SUMMER;
}
System.out.println(season);

43
仍舒 亳 仄亠仂亟
亠亠亳仍亠仆亳亠  仂 从仍舒
弍磦仍 enum 仄 仆亠磦仆仂 仂亰亟舒亠仄 从仍舒
仗仂亳亰于仂亟仆亶 仂 java.lang.Enum. 仂仆从亳
enum Season { ... }
从于亳于舒仍亠仆仆舒
class Season extends java.lang.Enum { ... }.
亊于仆仄 仂弍舒亰仂仄 仆舒仍亠亟仂于舒 仂 java.lang.Enum
仆亠 仗仂亰于仂仍磳 从仂仄仗亳仍仂, 仆仂:
System.out.println(Season.class.getSuperclass());
亟舒亠 于于仂亟:
class java.lang.Enum
44
仍舒 亳 仄亠仂亟
亠亠亳仍亠仆亳亠  仂 从仍舒
弌仂弍于亠仆仆仂 仆舒仍亠亟仂于舒仆亳亠 亰舒 仆舒 舒于仂仄舒亳亠从亳
于仗仂仍仆磳 从仂仄仗亳仍仂 Java.
丕仍仂于亳仄 仆舒亰于舒 从仍舒, 仂亰亟舒仆仆亶
从仂仄仗亳仍仂仂仄 亟仍 亠舒仍亳亰舒亳亳 仗亠亠亳仍亠仆亳 
enum-从仍舒仂仄,
舒 于仂亰仄仂亢仆亠 亰仆舒亠仆亳 仗亠亠亳仍磳仄仂亞仂 亳仗舒 
仍亠仄亠仆舒仄亳 enum-a.
亅仍亠仄亠仆 仗亠亠亳仍亠仆亳 - 从亰亠仄仗仍 enum从仍舒舒, 亟仂仗仆亠 舒亳亠从亳.

45
仍舒 亳 仄亠仂亟
舒亰于舒仆亳亠 亳 仗仂磲从仂于亶 仆仂仄亠
仍亠仄亠仆舒 enum
ミ頴笑 enum-从仍舒 仆舒仍亠亟亠 java.lang.Enum,
从仂仂亶 仂亟亠亢亳 磲 仄亠仂亟仂于 仗仂仍亠亰仆 亟仍 于亠
仗亠亠亳仍亠仆亳亶.
亳仄亠:
Season season = Season.WINTER;
System.out.println("season.name()=" + season.name()
+ " season.toString()=" + season.toString() + "
season.ordinal()=" + season.ordinal());
于仂亟:
season.name()=WINTER season.toString()=WINTER
season.ordinal()=0
46
仍舒 亳 仄亠仂亟
仂仍亠仆亳亠 仍亠仄亠仆舒 仗仂
仂从仂于仂仄 亳仄亠仆亳
舒亟舒舒: 仗仂仍亳 仍亠仄亠仆 enum 仗仂 亠亞仂 仂从仂于仂仄
仗亠亟舒于仍亠仆亳.
亠亠仆亳亠:  从舒亢亟仂仄 enum-从仍舒亠 从仂仄仗亳仍仂 舒于仂仄舒亳亠从亳
仂亰亟舒亠 仗亠亳舒仍仆亶 舒亳亠从亳亶 仄亠仂亟: public static
EnumClass valueOf(String name), 从仂仂亶 于仂亰于舒舒亠 仍亠仄亠仆
仗亠亠亳仍亠仆亳 EnumClass  仆舒亰于舒仆亳亠仄, 舒于仆仄 name.
亳仄亠 亳仗仂仍亰仂于舒仆亳:
String name = "WINTER"; Season season = Season.valueOf(name);
亠亰仍舒: 仗亠亠仄亠仆仆舒 season 弍亟亠 舒于仆舒 Season.WINTER.
仍亳 仍亠仄亠仆 仆亠 弍亟亠 仆舒亶亟亠仆, 仂 弍亟亠 于弍仂亠仆
IllegalArgumentException, 舒 亠仍亳 name 舒于亠仆 null NullPointerException.
47
仍舒 亳 仄亠仂亟
仂仍亠仆亳亠 于亠 仍亠仄亠仆仂于
仗亠亠亳仍亠仆亳
仆仂亞亟舒 仆亠仂弍仂亟亳仄仂 仗仂仍亳 仗亳仂从 于亠 仍亠仄亠仆仂于 enum从仍舒舒 于仂 于亠仄 于仗仂仍仆亠仆亳. 仍 亳 亠仍亠亶 于 从舒亢亟仂仄 enum从仍舒亠 从仂仄仗亳仍仂 仂亰亟舒亠 仄亠仂亟:
public static EnumClass[ ] values()
亳仄亠 亳仗仂仍亰仂于舒仆亳:
System.out.println(Arrays.toString(Season.values()));
于仂亟:
[WINTER, SPRING, SUMMER, AUTUMN]
弍舒亳亠 于仆亳仄舒仆亳亠, 仂 仆亳 仄亠仂亟 valueOf(), 仆亳 仄亠仂亟 values()
仆亠 仂仗亠亟亠仍亠仆 于 从仍舒亠 java.lang.Enum. 仄亠仂 仂亞仂 仂仆亳
舒于仂仄舒亳亠从亳 亟仂弍舒于仍ム 从仂仄仗亳仍仂仂仄 仆舒 舒仗亠
从仂仄仗亳仍亳亳 enum-从仍舒舒.
48
仍舒 亳 仄亠仂亟
亠仂亟  仗亠亠仄亠仆仆仄 亳仍仂仄
舒亞仄亠仆仂于 于 Java
仂亰仄仂亢仆仂 弍仍舒 亟仂弍舒于仍亠仆舒 于 JDK 1.5.
仍 从舒亰舒仆亳 舒亞仄亠仆舒 仗亠亠仄亠仆仆仂亶 亟仍亳仆
亳仗仂仍亰ム 亳 仂从亳 (...). 舒仗亳仄亠:
static void vaTest(int ... v) {  }
亅舒 亳仆舒从亳亠从舒 从仂仆从亳 从舒亰于舒亠
从仂仄仗亳仍仂, 仂 仄亠仂亟 vaTest () 仄仂亢亠
于亰于舒  仆仍亠仄 亳仍亳 弍仂仍亠亠 舒亞仄亠仆仂于. 
亠亰仍舒亠 v 仆亠磦仆仂 仂弍磦仍磳 从舒从 仄舒亳于 亳仗舒
int [ ]. 丐舒从亳仄 仂弍舒亰仂仄, 于仆亳 仄亠仂亟舒 vaTest ()
亟仂仗 从 v 仂亠于仍磳  亳仗仂仍亰仂于舒仆亳亠仄
亳仆舒从亳舒 仂弍仆仂亞仂 仄舒亳于舒.
49
仍舒 亳 仄亠仂亟
亠仂亟  仗亠亠仄亠仆仆仄 亳仍仂仄
舒亞仄亠仆仂于 于 Java
class VarArgs {
static void vaTest(int ... v) {
System.out.println("仂仍-于仂 舒亞仄亠仆仂于: " + v.length);
for (int i=0;i<v.length;i++) {
System.out.print (v[i] + " ");
}
public static void main(String args[]) {
vaTest (10); //1 舒亞仄亠仆
vaTest (1, 2, 3); //3 舒亞仄亠仆舒
vaTest (); // 弍亠亰 舒亞仄亠仆仂于
}
}

50
仍舒 亳 仄亠仂亟
亠仂亟  仗亠亠仄亠仆仆仄 亳仍仂仄
舒亞仄亠仆仂于 于 Java
于仂亟:
仂仍亳亠于仂 舒亞仄亠仆仂于: 1
10
仂仍亳亠于仂 舒亞仄亠仆仂于: 3
123
仂仍亳亠于仂 舒亞仄亠仆仂于: 0

51
仍舒 亳 仄亠仂亟
亠仂亟  仗亠亠仄亠仆仆仄 亳仍仂仄
舒亞仄亠仆仂于 于 Java
仄亠亠  仗舒舒仄亠仂仄 仗亠亠仄亠仆仆仂亶 亟仍亳仆 仄舒亳于
仄仂亢亠 仂亟亠亢舒 仂弍仆亠 仗舒舒仄亠. 亟仆舒从仂
仗舒舒仄亠 仗亠亠仄亠仆仆仂亶 亟仍亳仆 亟仂仍亢亠仆 弍
仗仂仍亠亟仆亳仄 仗舒舒仄亠仂仄, 仂弍磦仍亠仆仆仄 仄亠仂亟仂仄.
舒仗亳仄亠:
int dolt(int a, int b, double , int ... vals) //于亠仆仂!
int dolt (int a, int b, double , int ... vals, boolean
stopFlag) // 仂亳弍从舒!
亠仂亟 亟仂仍亢亠仆 仂亟亠亢舒 仂仍从仂 仂亟仆亳 仗舒舒仄亠
亳仗舒 varargs.
int dolt (int a, int b, double , int ... vals, double ...
morevals) // 仂亳弍从舒!
52
舒从亠
仂仆亳亠 仗舒从亠舒
Java 仂弍亠仗亠亳于舒亠 仗亠亳舒仍仆亶 仄亠舒仆亳亰仄 亟仍
舒亰亟亠仍亠仆亳 仗仂舒仆于舒 亳仄亠仆 从仍舒仂于 仆舒
亳仄亠仆仂于舒仆仆亠 仂弍仍舒亳. 亅仂 仄亠舒仆亳亰仄
仆舒亰于舒亠 束仗舒从亠損 (packages). 舒从亠  仂
从仂仆亠亶仆亠 亟仍 从仍舒仂于, 于 仗亠亟亠仍舒 从仂仂仂亞仂
亟仂仍亢仆舒 仂舒仆 仆亳从舒仍仆仂 亳仄亠仆
从仍舒仂于.
弍舒 仂仄舒 仂仗亠亟亠仍亠仆亳 仗舒从亠舒:
package <pkg_name>;
53
舒从亠
亠舒亳 仗舒从亠仂于
亠舒亳 仗舒从亠仂于:
package pkg1[.pkg2[.pkg3]];
丼仂弍 舒仆亳 仗舒从亠, Java 亳仗仂仍亰亠
从舒舒仍仂亞亳 舒亶仍仂于仂亶 亳亠仄. Class舒亶仍 亟仍 于亠 从仍舒仂于, 仗亳仆舒亟仍亠亢舒亳
从 仂亟仆仂仄 仗舒从亠, 亟仂仍亢仆 弍 仂舒仆亠仆
于 从舒舒仍仂亞亠, 仆舒亰于舒仆亳亠 从仂仂仂亞仂
仂于仗舒亟舒亠  亳仄亠仆亠仄 仗舒从亠舒 (亠亞亳 于舒亢亠仆).
package java.awt.image;

javaawtimage

舒亰仄亠亠仆亳亠仄 从仂仆 仍ミ頴笑 亳亠舒亳亳 仗舒从亠仂于 于 舒亶仍仂于仂亶
亳亠仄亠 仗舒于仍磳 仗亠亳舒仍仆舒 仗亠亠仄亠仆仆舒 仂从亢亠仆亳
CLASSPATH.
54
舒从亠
仄仗仂 仗舒从亠仂于
仂仍仆仂亠 亳仄 从仍舒舒 于从仍ム舒亠 于 亳亠舒亳 仗舒从亠仂于.
仄仗仂 从仍舒舒 亳仍亳 仗舒从亠舒:
import pkg1[.pkg2].(classname|*);
1. 仄仗仂亳仂于舒仆亳亠 从仍舒舒 仆亳从舒从 仆亠 于仍亳磳 仆舒
仂于亠仆 亟仂仗舒 从 亠亞仂 仍亠仄亠仆舒仄 !!!
2.  仍ミ英 Java-仗仂亞舒仄仄 舒于仂仄舒亳亠从亳
亳仄仗仂亳亠 仗舒从亠 java.lang.* !!!

55
舒从亠
丕仂于仆亳 亟仂仗舒  亠仂仄 仗舒从亠仂于
package p1;

package p2;

public class A {

public class D extends A {

public int pub;

}

protected prot;

public class E {

int def;

}

private int priv;
}
public class B extends A {
}
public class C { }
56
舒从亠
丕仂于仆亳 亟仂仗舒  亠仂仄 仗舒从亠仂于
A

B

C

D

E

public

+

+

+

+

+

protecte
d

+

+

+

+

-

<default>

+

+

+

-

-

private

+

-

-

-

-

57
舒从亠
丕仂于仆亳 亟仂仗舒  亠仂仄 仗舒从亠仂于
1. 仂仗 仆舒 仂于仆亠 从仍舒舒:
-

public - 从仍舒 于亳亟亠仆 于亠亰亟亠

-

<default> - 从仍舒 于亳亟亠仆 于 仗亠亟亠仍舒
于仂亠亞仂 仗舒从亠舒

2. 仂仗 仆舒 仂于仆亠 仍亠仆仂于 从仍舒舒:
仂亟亳亳从舒仂

仆亳  仂仄 亢亠
从仍舒舒
仗舒从亠亠

仂亟从仍舒 于
亟亞仂仄
仗舒从亠亠

仂亳亰于仂仍仆亶
从仍舒 于 亟亞仂仄
仗舒从亠亠

public

+

+

+

+

protected

+

+

+

-

<default>

+

+

-

-

private

+

-

-

58
弌从舒 Java-仗仂亞舒仄仄
-

 仗亠于仂亶 仂从亠 舒亶仍舒 仄仂亢亠
弍 1 仆亠仂弍磶舒亠仍仆亶 仂仗亠舒仂
package

-

 仍亠亟ム亳 仂从舒 仄仂亢亠 弍
1 亳仍亳 仆亠从仂仍从仂 仆亠仂弍磶舒亠仍仆
仂仗亠舒仂仂于 import

-

舒仍亠亠 亳亟 仂仗亳舒仆亳 从仍舒仂于 亳
亳仆亠亠亶仂于

弌亠亟亳 从仍舒仂于, 仂仗亳舒仆仆 于 仂亟仆仂仄
舒亶仍亠, 仂仍从仂 仂亟亳仆 仄仂亢亠 弍
仂弍磦仍亠仆  仄仂亟亳亳从舒仂仂仄
public.
59

More Related Content

3. java lecture classes

  • 1. 仍舒 亳 仄亠仂亟 仗亳舒仆亳亠 从仍舒舒 <仄仂亟亳亳从舒仂> class <仄仍舒舒> {[仄仂亟亳亳从舒仂] <亳仗> <仗亠亠仄亠仆仆舒_从亰亠仄仗仍舒1>; [仄仂亟亳亳从舒仂] <亳仗> <仗亠亠仄亠仆仆舒_从亰亠仄仗仍舒N>; [仄仂亟亳亳从舒仂] <亳仗> <仄亠仂亟_从仍舒舒1>(<仗亳仂从 仂仄. 仗舒舒仄.) { // 亠仍仂 仄亠仂亟舒; } [仄仂亟亳亳从舒仂] <亳仗> <仄亠仂亟_从仍舒舒>(<仗亳仂从 仂仄.仗舒舒仄.>) { // 亠仍仂 仄亠仂亟舒; } } 1
  • 2. 仍舒 亳 仄亠仂亟 仗亳舒仆亳亠 从仍舒舒 class Point {int x, y; Point () 亅从亰亠仄仗仍仆亠 仗亠亠仄亠仆仆亠 (instance variables) {x=0; y=0; } Point (int x1,int y1) 仂仆从仂 丼仍亠仆 从仍舒舒 (class (仗亠亠亞亢亠仆仆亠) members) {x=x1; y=y1; } int getX() {return x;} int getY() {return y;} } 亠仂亟 从仍舒舒 (methods) 2
  • 3. 仍舒 亳 仄亠仂亟 弌仂亰亟舒仆亳亠 仍仂仆 仗亠亠仄亠仆仆 亳 仂弍亠从仂于 从仍舒舒 Point p1; 仂亰亟舒仆舒 仍仂仆舒 仗亠亠仄亠仆仆舒 p1 = new Point(); Point p2 = new Point(); Point p3 = p1; p1 仂亰亟舒仆 仂弍亠从 束从仂仂从舒 仂仄舒損 仂亰亟舒仆亳 仂弍亠从舒 仂亰亟舒仆舒 仍仂仆舒 仗亠亠仄亠仆仆舒 从舒亰于舒ム舒 仆舒 p1 仂弍亠从 p3 c仍从舒 仆舒 p1 3
  • 4. 仍舒 亳 仄亠仂亟 弌仂亰亟舒仆亳亠 仍仂仆 仗亠亠仄亠仆仆 亳 仂弍亠从仂于 从仍舒舒 Cannot find variable p1 Point p1; { p1 = new Point(5,10); p1 = null; } System.out.println(p1.x + "" + p1.y); 5, 10 {Point p1 = new Point(5,10); } System.out.println(p1.x + "" + p1.y); NullPointerException Point p2; {Point p1 = new Point(5,10); p2 = p1; p1 = null; } System.out.println(p2.x + , + p2.y); 4
  • 5. 仍舒 亳 仄亠仂亟 亠亠亞亰从舒 (overloading) 仄亠仂亟仂于 [仄仂亟亳亳从舒仂] <亳仗> <亳仄_仄亠仂亟舒> (<仗亳仂从 仂仄. 仗舒舒仄.) 亳亞仆舒舒 仄亠仂亟舒 亠亠亞亰从舒 仂亰亟舒仆亳亠 2 亳 弍仂仍亠亠 仄亠仂亟仂于 仂亟亳仆舒从仂于仄亳 亳仄亠仆舒仄亳 仆仂 舒亰仆仄亳 亳亞仆舒舒仄亳 5
  • 6. 仍舒 亳 仄亠仂亟 亠亠亞亰从舒 (overloading) 仄亠仂亟仂于 class OverloadDemo {void test() {System.out.println(舒舒仄亠 仂于ム); } void test(int a, int b) {System.out.println(a 亳 b: + a + + b); } void test(double a) {System.out.println(亠亠于亠仆仆仂亠 a: + a); } } 6
  • 7. 仍舒 亳 仄亠仂亟 仂亟亳亳从舒仂 static 弌舒亳亠从亳亠 仗亠亠仄亠仆仆亠 弍磦仍亠仆亳亠: static <type> <name> 弍舒亠仆亳亠: <classname>.<varname> 弌舒亳亠从亳亠 仗亠亠仄亠仆仆亠: 仂亰亟舒ム 于 亠亟亳仆于亠仆仆仂仄 从亰亠仄仗仍亠 亠于ム 于仆亠 亰舒于亳亳仄仂亳 仂 仂弍亠从仂于 从仍舒舒 仂亰亟舒ム JVM 于 仄仂仄亠仆 仗亠于仂亞仂 仂弍舒亠仆亳 从 从仍舒 亟仂仗从舒ム 仂弍舒亠仆亳亠 亟仂 仂亰亟舒仆亳 仂弍亠从仂于 从仍舒舒 7
  • 8. 仍舒 亳 仄亠仂亟 仂亟亳亳从舒仂 static 弌舒亳亠从亳亠 仄亠仂亟 弍磦仍亠仆亳亠: static <type> <name> (<parameters>) 弍舒亠仆亳亠: <classname>.<metodname>() 弌舒亳亠从亳亠 仄亠仂亟: 仄仂亞 于亰于舒 仂仍从仂 亟亞亳亠 舒亳亠从亳亠 仄亠仂亟 亟舒仆仆仂亞仂 从仍舒舒 亟仂仍亢仆 仂弍舒舒 仂仍从仂 从 舒亳亠从亳仄 仗亠亠仄亠仆仆仄 于仆亳 舒亳亠从亳 仄亠仂亟仂于 仆亠仍亰 亳仗仂仍亰仂于舒 仍从亳 this 亳 super 8
  • 9. 仍舒 亳 仄亠仂亟 仂亟亳亳从舒仂 static 弌舒亳亠从亳亠 弍仍仂从亳 从仂亟舒 弍磦仍亠仆亳亠: static { } 弌舒亳亠从亳亶 弍仍仂从 从仂亟舒 于仗仂仍仆磳 仂亟亳仆 舒亰 仗亳 仗亠于仂仆舒舒仍仆仂亶 亰舒亞亰从亠 从仍舒舒 9
  • 10. 仍舒 亳 仄亠仂亟 仗仂仍亰仂于舒仆亳亠 从仍ム亠于仂亞仂 仍仂于舒 this 1. 丼仂弍 仂弍仂亶亳 从亳亠 仗亠亠仄亠仆仆仂亶 从亰亠仄仗仍舒 仂仄舒仍仆仄亳 仗舒舒仄亠舒仄亳 Class Point { int x, y; Point (int x, int y) {this.x=x; this.y=y; } } 10
  • 11. 仍舒 亳 仄亠仂亟 仗仂仍亰仂于舒仆亳亠 从仍ム亠于仂亞仂 仍仂于舒 this 2. 丼仂弍 于亰于舒 仂亟亳仆 从仂仆从仂 亳亰 亟亞仂亞仂 从仂仆从仂舒 (explicit constructor invocation) public class Rectangle {private int x, y, w, h; public Rectangle() {this.x = 0; this.y = 0; this.w = 0; this.h = 0;} public Rectangle(int w, int h) {this.x = 0; this.y = 0; this.w = w; this.h = h;} public Rectangle(int x, int y, int w, int h) {this.x = x; this.y = y; this.w = w; this.h = h; } } 11
  • 12. 仍舒 亳 仄亠仂亟 仗仂仍亰仂于舒仆亳亠 从仍ム亠于仂亞仂 仍仂于舒 this 2. 丼仂弍 于亰于舒 仂亟亳仆 从仂仆从仂 亳亰 亟亞仂亞仂 从仂仆从仂舒 (explicit constructor invocation) public class Rectangle {private int x, y, w, h; public Rectangle() {this(0, 0, 0, 0);} public Rectangle(int w, int h) {this(0, 0, w, h);} public Rectangle(int x, int y, int w, int h) {this.x = x; this.y = y; this.w = w; this.h = h; } } 12
  • 13. 仍舒 亳 仄亠仂亟 仍仂亢亠仆仆亠 从仍舒 仍仂亢亠仆仆亠 从仍舒 弌舒亳亠从亳亠 于仍仂亢亠仆仆亠 从仍舒 亠舒亳亠从亳亠 于仍仂亢亠仆仆亠 从仍舒 (static nested classes) (inner classes 于仆亠仆仆亳亠 从仍舒) 亳亳仆 仂亰亟舒仆亳 于仍仂亢亠仆仆 从仍舒仂于: 1.仂亞亳亠从舒 亞仗仗亳仂于从舒 从仍舒仂于 2.舒亳磳 于仂亰仄仂亢仆仂亳 亳仆从舒仗仍亳亳 3. 仆亠从仂仂 仍舒 仗仂于舒亠 亳舒弍亠仍仆仂 从仂亟舒 13
  • 14. 仍舒 亳 仄亠仂亟 弌舒亳亠从亳亠 于仍仂亢亠仆仆亠 从仍舒 弌舒亳亠从亳亶 于仍仂亢亠仆仆亶 从仍舒 磦仍磳 舒亳亠从亳仄 仍亠仆仂仄 从仍舒舒, 于 从仂仂亶 仂仆 于仍仂亢亠仆. 丐.亠. 仂仆 仆亠 仄仂亢亠 仆舒仗礆 舒弍仂舒 仆亠舒亳亠从亳仄亳 仗亠亠仄亠仆仆仄亳 亳 仄亠仂亟舒仄亳 于仆亠仆亠亞仂 从仍舒舒. 14
  • 15. 仍舒 亳 仄亠仂亟 弌舒亳亠从亳亠 于仍仂亢亠仆仆亠 从仍舒 class A { static int x; int y; A() { System.out.println("constructor A"); } static class B {B() { System.out.println("constrcutor B"); x = 5; public class Test { A a = new A(); public static void main(String[ ] args) a.y = 15; { } A.B b = new A.B(); } } } } 15
  • 16. 仍舒 亳 仄亠仂亟 亠舒亳亠从亳亠 于仍仂亢亠仆仆亠 从仍舒 亠舒亳亠从亳亶 于仍仂亢亠仆仆亶 从仍舒 磦仍磳 仂弍仆仄 仍亠仆仂仄 于仆亠仆亠亞仂 从仍舒舒, .亠. 亠于亠 仂仍从仂 于 仂舒于亠 仂弍亠从舒 于仆亠仆亠亞仂 从仍舒舒 亳 亳仄亠亠 仗礆仂亶 亟仂仗 从 仗亠亠仄亠仆仆仄 亳 仄亠仂亟舒仄 于仆亠仆亠亞仂 从仍舒舒. 弍亠从 于仍仂亢亠仆仆仂亞仂 从仍舒舒 仄仂亢亠 亠于仂于舒 仂仍从仂 于仆亳 仂弍亠从舒 于仆亠仆亠亞仂 从仍舒舒 弌亠于ム (亳 亟仂于仂仍仆仂 舒仂 亳仗仂仍亰ム) 舒从亢亠 舒仆仂仆亳仄仆亠 于仆亠仆仆亳亠 从仍舒 (舒仄仂亳仄 于 仂弍舒弍仂从亠 仂弍亳亶) 16
  • 17. 仍舒 亳 仄亠仂亟 亠舒亳亠从亳亠 于仍仂亢亠仆仆亠 从仍舒 class A { static int x; int y; A() { System.out.println("constructor A"); } class B { B() { System.out.println("constrcutor B"); x = 5; public class Test { y = 15; public static void main(String[ ] args) } { A a = new A(); } A.B b = a.new B(); } } } 17
  • 18. 仍舒 亳 仄亠仂亟 舒仍亠亟仂于舒仆亳亠 弍舒 仂仄舒 仂弍磦仍亠仆亳 从仍舒舒, 仆舒仍亠亟ム亠亞仂 仗亠从仍舒: class <subclass_name> extends <superclass_name> { //亠仍仂 从仍舒舒 } 亊亰从 Java 仆亠 仗仂亟亟亠亢亳于舒亠 仄仆仂亢亠于亠仆仆仂亞仂 仆舒仍亠亟仂于舒仆亳 从仍舒仂于!!! 18
  • 19. 仍舒 亳 仄亠仂亟 舒仍亠亟仂于舒仆亳亠 class Point3D extends Point {int z; Point3D () { z=0; } Point3D (int x1, int y1, int z1) { z=z1; } } 19
  • 20. 仍舒 亳 仄亠仂亟 仂磲仂从 于亰仂于舒 从仂仆从仂仂于 仗亳 仆舒仍亠亟仂于舒仆亳亳 亳 仂亰亟舒仆亳亳 仂弍亠从舒 仗仂亟从仍舒舒 于亠亞亟舒 于亰于舒亠 从仂仆从仂 亠亞仂 弍舒亰仂于仂亞仂 从仍舒舒, 仂亞仂 从仂仆从仂 亠亞仂 弍舒亰仂于仂亞仂 从仍舒舒 亳 .亟. 于仗仍仂 亟仂 从仂仆 亳亠舒亳亳 (从仍舒舒 Object). 亳亠仄 亠仍亳 仆亠 从舒亰舒仆仂 磦仆仂 ( 仗仂仄仂 super) 于亰于舒亠 从仂仆从仂 弍亠亰 仗舒舒仄亠仂于 (仂亰亟舒仆仆亶 磦仆仂 亳仍亳 仗仂 仄仂仍舒仆亳). 仍亳 仗仂亟仂亟亠亞仂 从仂仆从仂舒 仆亠 于亟舒亠 仂亳弍从舒 从仂仄仗亳仍亳亳. 20
  • 21. 仍舒 亳 仄亠仂亟 仍ム亠于仂亠 仍仂于仂 super 1. 亰仂于 从仂仆从仂舒 仆亠仗仂亠亟于亠仆仆仂亞仂 仗亠从仍舒舒 super (parameters) 于亰仂于 亟仂仍亢亠仆 弍 仗亠于仄 于 从仂仆从仂亠 仗仂亟从仍舒舒 仆亳仄舒仆亳亠! 亅仂 仗亳仄亠仆磳 仂仍从仂 亠仍亳 仆舒亟仂 于亰于舒 从仂仆从仂 仗亠从仍舒舒 仗舒舒仄亠舒仄亳! 2. 仂仗 从 仍亠仄亠仆 仗亠从仍舒舒, 从仂仄 仍亠仄亠仆仂仄 仗仂亟从仍舒舒 super.var_name 亳仍亳 super.metod_name() (super 仆亠 于仍亳磳 仆舒 亳仗 亟仂仗舒) 21
  • 22. 仍舒 亳 仄亠仂亟 仂磲仂从 于亰仂于舒 从仂仆从仂仂于 仗亳 仆舒仍亠亟仂于舒仆亳亳 弍亠亰 亳仗仂仍亰仂于舒仆亳 super class Point3D extends Point {int z; Point3D () { z=0; } Point3D (int x1,int y1, int z1) { z=z1; } Point3D p3d = new Point3D(); Point() -> Point3D() Point3D p3d = new Point3D(10, 20, 30); Point() -> Point3D(10,20,30) } 22
  • 23. 仍舒 亳 仄亠仂亟 仂磲仂从 于亰仂于舒 从仂仆从仂仂于 仗亳 仆舒仍亠亟仂于舒仆亳亳 亳仗仂仍亰仂于舒仆亳亠仄 super class Point3D extends Point {int z; Point3D () { z=0; } Point3D (int x1,int y1, int z1) { super (x1, y1); Point3D p3d = new Point3D(); Point() -> Point3D() Point3D p3d = new Point3D(10, 20, 30); Point(10, 20) -> Point3D(10,20,30) z=z1; } } 23
  • 24. 仍舒 亳 仄亠仂亟 仂亟亳亳从舒仂 亟仂仗舒 class Parent class Other {public int v1; { private int v2; // 亟仂仗仆 v1, v3, v4 protected int v3; class Child // 仆亠亟仂仗仆舒 v2 int v4; extends Parent } { } // 亟仂仗仆 v1, v3, v4 // 仆亠亟仂仗仆舒 v2 } 24
  • 25. 仍舒 亳 仄亠仂亟 仂亟亳亳从舒仂 亟仂仗舒 仗舒于亳仍仆仂 仗仂亠从亳仂于舒仆仆仂仄 Java从仍舒亠, 于亠 从亰亠仄仗仍仆亠 仗亠亠仄亠仆仆亠 从仍舒舒 亟仂仍亢仆 亳仄亠 仄仂亟亳亳从舒仂 private, 亟仂仗 亟仂仍亢亠仆 仂亠于仍 亠亠亰 set/get 仄亠仂亟 (束亠亠/亞亠亠損) Eclipse: Source -> generate Getters and Setters 25
  • 26. 仍舒 亳 仄亠仂亟 仂亟亳亳从舒仂 亟仂仗舒 class Point {private int x, y; class Point {int x, y; Point () {x=0; y=0; } Point (int x1,int y1) Point () {x=0; y=0; } Point (int x1,int y1) {x=x1; y=y1; } public int getX() {return x;} public int getY() {return y;} public int setX(int x) { this.x = x;} {x=x1; y=y1; } } public int setY(int y) { this.y = y;} } 26
  • 27. 仍舒 亳 仄亠仂亟 亳仆舒仄亳亠从舒 亟亳仗亠亠亳亰舒亳 仍仂从 弌仍仂仆仂亶 仗亠亠仄亠仆仆仂亶 仗亠从仍舒舒 仄仂亢亠 弍 仆舒亰仆舒亠仆舒 仍从舒 仆舒 仍ミ頴笑 仗仂亟从仍舒, 仗仂亳亰于仂亟仆亶 仂 仂亞仂 仗亠从仍舒舒. 仍亳 仍仂仆舒 仗亠亠仄亠仆仆舒 仗亠从仍舒舒 从舒亰于舒亠 仆舒 仂弍亠从 仗仂亟从仍舒舒, 亠亠亰 仗亠亠仄亠仆仆 仄仂亢仆仂 仗仂仍亳 亟仂仗 仂仍从仂 从 亠仄 仍亠仆舒仄 仗仂亟从仍舒舒, 从仂仂亠 仂仗亠亟亠仍ム 于 仗亠从仍舒亠. 27
  • 28. 仍舒 亳 仄亠仂亟 亳仆舒仄亳亠从舒 亟亳仗亠亠亳亰舒亳 仍仂从 class Point Point Pobj = new Point(); { int x, int y; Point3D Cobj = new Point3D(); Pobj = Cobj; } class Point3D extends Point { int z; } Pobj.x = 1; //于亠仆仂! x 仂仗亠亟亠仍亠仆舒 于 Point Pobj.z = 10; //仂亳弍从舒! z 仆亠 仂仗亠亟亠仍亠仆舒 于 Point 28
  • 29. 仍舒 亳 仄亠仂亟 亳仆舒仄亳亠从舒 亟亳仗亠亠亳亰舒亳 仄亠仂亟仂于 亠亠仂仗亠亟亠仍亠仆亳亠 仄亠仂亟舒 (overriding) 仂亰亟舒仆亳亠 于 仗仂亟从仍舒亠 仄亠仂亟舒, 仂于仗舒亟舒ム亠亞仂 仗仂 亳亞仆舒亠 仄亠仂亟仂仄 仗亠从仍舒舒. 亳仆舒仄亳亠从舒 亟亳仗亠亠亳亰舒亳 仄亠仂亟仂于 仂 仄亠舒仆亳亰仄, 仗仂亰于仂仍ム亳亶 仂仗亠亟亠仍亳 从舒从仂亶 亳亰 仗亠亠仂仗亠亟亠仍亠仆仆 仄亠仂亟仂于 仆亢仆仂 于亰于舒, 于仂 于亠仄 于仗仂仍仆亠仆亳, 舒 仆亠 于仂 于亠仄 从仂仄仗亳仍亳亳. 29
  • 30. 仍舒 亳 仄亠仂亟 亳仆舒仄亳亠从舒 亟亳仗亠亠亳亰舒亳 仄亠仂亟仂于 class Figure class Rectangle extends Figure {double dim1, dim2; {Rectangle(double a, double b) Figure(double a, double b) {super(a,b); } {dim1 = a; dim2 = b; } void square() void square() {System.out.println (Square is not defined); } {System.out.println(Rectangle square = + (dim1*dim2)); } } } 30
  • 31. 仍舒 亳 仄亠仂亟 亳仆舒仄亳亠从舒 亟亳仗亠亠亳亰舒亳 仄亠仂亟仂于 class Triangle extends Figure {Triangle(double a, double b) {super(a,b); } void square() {System.out.println(Trian gle square= + (dim1*dim2/2)); } } class FindSquare {public static void main(String args[ ]) {Figure f; Random r = new Random(); for (int k=0; k<10; k++) { int i = r.nextInt(100); if (i<50) { f = new Rectangle(9,5); } else { f = new Triangle(10,8); } f.square(); } } } 31
  • 32. 仍舒 亳 仄亠仂亟 亳仆舒仄亳亠从舒 亟亳仗亠亠亳亰舒亳 仄亠仂亟仂于 于仂亟 仂亶 仗仂亞舒仄仄: Rectangle square = 45.0 Triangle square= 40.0 Rectangle square = 45.0 Rectangle square = 45.0 Triangle square= 40.0 Triangle square= 40.0 Rectangle square = 45.0 Rectangle square = 45.0 Triangle square= 40.0 Rectangle square = 45.0 32
  • 33. 仍舒 亳 仄亠仂亟 弍舒从仆亠 仄亠仂亟 亳 从仍舒 弍磦仍亠仆亳亠 舒弍舒从仆仂亞仂 仄亠仂亟舒: abstract <type> <method_name> (<parameters>); 仍亳 于 从仍舒亠 亠 仂 弍 仂亟亳仆 舒弍舒从仆亶 仄亠仂亟 -> 从仍舒 亟仂仍亢亠仆 弍 仂弍磦仍亠仆 舒弍舒从仆仄. abstract class <class_name> { } ミ頴笑 仗仂亟从仍舒 舒弍舒从仆仂亞仂 从仍舒舒 亟仂仍亢亠仆 亳仍亳 亠舒仍亳亰仂于舒 于亠 亠亞仂 舒弍舒从仆亠 仄亠仂亟 亳仍亳 舒仄 亟仂仍亢亠仆 弍 仂弍磦仍亠仆 舒弍舒从仆仄 ! 33
  • 34. 仍舒 亳 仄亠仂亟 弍舒从仆亠 仄亠仂亟 亳 从仍舒 abstract class Figure {double dim1, dim2; Figure(double a, double b) {dim1 = a; dim2 = b; } abstract void square(); } 34
  • 35. 仆亠亠亶 [<仄仂亟亳亳从舒仂>] interface <亳仄> [extends <仗亳仂从 亳仆亠亠亶仂于>] { <亳仗> <亳仄_仄亠仂亟舒>(<仗亳仂从 仗舒舒仄亠仂于>); ... <亳仗> <亳仄_从仂仆舒仆> = <亰仆舒亠仆亳亠>; } 1. 仆亠亠亶 亟仂仗从舒ム 仄仆仂亢亠于亠仆仆仂亠 仆舒仍亠亟仂于舒仆亳亠 2. 亠 仄亠仂亟 舒弍舒从仆亠 (弍亠亰 仄仂亟亳亳从舒仂舒 abstract) 3. 亠 仗亠亠仄亠仆仆亠 static 亳 final (弍亠亰 仂仂于. 仄仂亟亳亳从舒仂仂于), 仆亠仂弍仂亟亳仄舒 亳仆亳亳舒仍亳亰舒亳 4. 亠 仗亠亠仄亠仆仆亠 亳 仄亠仂亟 public (弍亠亰 仄仂亟亳亳从舒仂舒) 35
  • 36. 仆亠亠亶 亠舒仍亳亰舒亳 亳仆亠亠亶仂于 class <亳仄_从仍舒舒> [extends <亳仄_仗亠从仍舒舒>] [implements <仗亳仂从 亳仆亠亠亶仂于>] { } interface Callback {void callback(int param); } class Client implements Callback {public void callback(int p) {System.out.println("callback called with " + p); } } 36
  • 37. 仆亠亠亶 亠舒仍亳亰舒亳 亳仆亠亠亶仂于 仂弍亠仆仆仂亳 亠舒仍亳亰舒亳亳 亳仆亠亠亶仂于: 1. 亠仂亟, 从仂仂亠 亠舒仍亳亰ム 亳仆亠亠亶, 亟仂仍亢仆 弍 仂弍磦仍亠仆 从舒从 public. 弌亳亞仆舒舒 亳仗舒 亠舒仍亳亰ム亠亞仂 仄亠仂亟舒 亟仂仍亢仆舒 仂仆仂 仂仂于亠于仂于舒 亳亞仆舒亠 亳仗舒, 从舒亰舒仆仆仂亶 于 仂仗亠亟亠仍亠仆亳亳 亳仆亠亠亶舒. 2. 仍亳 从仍舒 于从仍ム舒亠 亳仆亠亠亶, 仆仂 亠舒仍亳亰亠 仆亠 于亠 亠亞仂 仄亠仂亟, 仂 舒从仂亶 从仍舒 亟仂仍亢亠仆 弍 仂弍磦仍亠仆 从舒从 舒弍舒从仆亶. 3. 仍亳 从仍舒 亠舒仍亳亰亠 亳仆亠亠亶, 仆舒仍亠亟仂于舒仆仆亶 仂 亟亞仂亞仂 亳仆亠亠亶舒, 从仍舒 亟仂仍亢亠仆 亠舒仍亳亰仂于舒 于亠 仄亠仂亟, 仂仗亠亟亠仍亠仆仆亠 于 亠仗仂从亠 仆舒仍亠亟仂于舒仆亳 亳仆亠亠亶仂于. 37
  • 38. 仆亠亠亶 弌仍仂仆亠 仗亠亠仄亠仆仆亠 亳仆亠亠亶仆仂亞仂 亳仗舒 interface Callback {void callback(int param); } class Client implements Callback { public void callback(int p) //亠舒仍亳亰舒亳 仄亠仂亟舒 亳仆亠亠亶舒 {System.out.println("callback called with " + p);} int getSquare(int p) //仂弍于亠仆仆亶 仄亠仂亟 从仍舒舒 {System.out.println("square = " + (p*p));} } 38
  • 39. 仆亠亠亶 弌仍仂仆亠 仗亠亠仄亠仆仆亠 亳仆亠亠亶仆仂亞仂 亳仗舒 class TestIface {public static void main(String args[ ]) {Callback = new Client(); c.callback(42); //于亠仆仂! c.getSquare(42); //仂亳弍从舒! 仍仂仆舒 仗亠亠仄亠仆仆舒 亳仆亠亠亶仆仂亞仂 亳仗舒 仆亠 仄仂亢亠 仂弍舒舒 从 仂弍于亠仆仆仄 仄亠仂亟舒仄 从仍舒仂于 } } 39
  • 41. 仍舒 亳 仄亠仂亟 仂亟亳亳从舒仂 final 1. final double pi = 3.14; //仆亠亳亰仄亠仆磳仄舒 仍仂从舒仍仆舒 仗亠亠仄亠仆仆舒 2. final int getX() {} //仄亠仂亟, 亟仍 从仂仂仂亞仂 亰舒仗亠亠仆仂 仗亠亠仂仗亠亟亠仍亠仆亳亠 (overriding) 3. final class A {} //从仍舒, 亟仍 从仂仂仂亞仂 亰舒仗亠亠仆仂 仆舒仍亠亟仂于舒仆亳亠 41
  • 42. 仍舒 亳 仄亠仂亟 class A { final-仍亠仆 从仍舒仂于, 仆亠亳亰仄亠仆磳仄亠 仂弍亠从 final String mName; public A(String name) { mName = name; 亠亳仄亠于舒 } 仆亠亳亰仄亠仆磳仄 仂弍亠从仂于: public getName() { 1) 仂仂从仂弍亠亰仂仗舒仆仂 ! return mName; 2) 仂亳亰于仂亟亳亠仍仆仂 ! } public setK(String name) { mName = name; } } 42
  • 43. 仍舒 亳 仄亠仂亟 亠亠亳仍亠仆亳 于 Java: enum enum Season { WINTER, SPRING, SUMMER, AUTUMN } Season season = Season.SPRING; if (season == Season.SPRING) { season = Season.SUMMER; } System.out.println(season); 43
  • 44. 仍舒 亳 仄亠仂亟 亠亠亳仍亠仆亳亠 仂 从仍舒 弍磦仍 enum 仄 仆亠磦仆仂 仂亰亟舒亠仄 从仍舒 仗仂亳亰于仂亟仆亶 仂 java.lang.Enum. 仂仆从亳 enum Season { ... } 从于亳于舒仍亠仆仆舒 class Season extends java.lang.Enum { ... }. 亊于仆仄 仂弍舒亰仂仄 仆舒仍亠亟仂于舒 仂 java.lang.Enum 仆亠 仗仂亰于仂仍磳 从仂仄仗亳仍仂, 仆仂: System.out.println(Season.class.getSuperclass()); 亟舒亠 于于仂亟: class java.lang.Enum 44
  • 45. 仍舒 亳 仄亠仂亟 亠亠亳仍亠仆亳亠 仂 从仍舒 弌仂弍于亠仆仆仂 仆舒仍亠亟仂于舒仆亳亠 亰舒 仆舒 舒于仂仄舒亳亠从亳 于仗仂仍仆磳 从仂仄仗亳仍仂 Java. 丕仍仂于亳仄 仆舒亰于舒 从仍舒, 仂亰亟舒仆仆亶 从仂仄仗亳仍仂仂仄 亟仍 亠舒仍亳亰舒亳亳 仗亠亠亳仍亠仆亳 enum-从仍舒仂仄, 舒 于仂亰仄仂亢仆亠 亰仆舒亠仆亳 仗亠亠亳仍磳仄仂亞仂 亳仗舒 仍亠仄亠仆舒仄亳 enum-a. 亅仍亠仄亠仆 仗亠亠亳仍亠仆亳 - 从亰亠仄仗仍 enum从仍舒舒, 亟仂仗仆亠 舒亳亠从亳. 45
  • 46. 仍舒 亳 仄亠仂亟 舒亰于舒仆亳亠 亳 仗仂磲从仂于亶 仆仂仄亠 仍亠仄亠仆舒 enum ミ頴笑 enum-从仍舒 仆舒仍亠亟亠 java.lang.Enum, 从仂仂亶 仂亟亠亢亳 磲 仄亠仂亟仂于 仗仂仍亠亰仆 亟仍 于亠 仗亠亠亳仍亠仆亳亶. 亳仄亠: Season season = Season.WINTER; System.out.println("season.name()=" + season.name() + " season.toString()=" + season.toString() + " season.ordinal()=" + season.ordinal()); 于仂亟: season.name()=WINTER season.toString()=WINTER season.ordinal()=0 46
  • 47. 仍舒 亳 仄亠仂亟 仂仍亠仆亳亠 仍亠仄亠仆舒 仗仂 仂从仂于仂仄 亳仄亠仆亳 舒亟舒舒: 仗仂仍亳 仍亠仄亠仆 enum 仗仂 亠亞仂 仂从仂于仂仄 仗亠亟舒于仍亠仆亳. 亠亠仆亳亠: 从舒亢亟仂仄 enum-从仍舒亠 从仂仄仗亳仍仂 舒于仂仄舒亳亠从亳 仂亰亟舒亠 仗亠亳舒仍仆亶 舒亳亠从亳亶 仄亠仂亟: public static EnumClass valueOf(String name), 从仂仂亶 于仂亰于舒舒亠 仍亠仄亠仆 仗亠亠亳仍亠仆亳 EnumClass 仆舒亰于舒仆亳亠仄, 舒于仆仄 name. 亳仄亠 亳仗仂仍亰仂于舒仆亳: String name = "WINTER"; Season season = Season.valueOf(name); 亠亰仍舒: 仗亠亠仄亠仆仆舒 season 弍亟亠 舒于仆舒 Season.WINTER. 仍亳 仍亠仄亠仆 仆亠 弍亟亠 仆舒亶亟亠仆, 仂 弍亟亠 于弍仂亠仆 IllegalArgumentException, 舒 亠仍亳 name 舒于亠仆 null NullPointerException. 47
  • 48. 仍舒 亳 仄亠仂亟 仂仍亠仆亳亠 于亠 仍亠仄亠仆仂于 仗亠亠亳仍亠仆亳 仆仂亞亟舒 仆亠仂弍仂亟亳仄仂 仗仂仍亳 仗亳仂从 于亠 仍亠仄亠仆仂于 enum从仍舒舒 于仂 于亠仄 于仗仂仍仆亠仆亳. 仍 亳 亠仍亠亶 于 从舒亢亟仂仄 enum从仍舒亠 从仂仄仗亳仍仂 仂亰亟舒亠 仄亠仂亟: public static EnumClass[ ] values() 亳仄亠 亳仗仂仍亰仂于舒仆亳: System.out.println(Arrays.toString(Season.values())); 于仂亟: [WINTER, SPRING, SUMMER, AUTUMN] 弍舒亳亠 于仆亳仄舒仆亳亠, 仂 仆亳 仄亠仂亟 valueOf(), 仆亳 仄亠仂亟 values() 仆亠 仂仗亠亟亠仍亠仆 于 从仍舒亠 java.lang.Enum. 仄亠仂 仂亞仂 仂仆亳 舒于仂仄舒亳亠从亳 亟仂弍舒于仍ム 从仂仄仗亳仍仂仂仄 仆舒 舒仗亠 从仂仄仗亳仍亳亳 enum-从仍舒舒. 48
  • 49. 仍舒 亳 仄亠仂亟 亠仂亟 仗亠亠仄亠仆仆仄 亳仍仂仄 舒亞仄亠仆仂于 于 Java 仂亰仄仂亢仆仂 弍仍舒 亟仂弍舒于仍亠仆舒 于 JDK 1.5. 仍 从舒亰舒仆亳 舒亞仄亠仆舒 仗亠亠仄亠仆仆仂亶 亟仍亳仆 亳仗仂仍亰ム 亳 仂从亳 (...). 舒仗亳仄亠: static void vaTest(int ... v) { } 亅舒 亳仆舒从亳亠从舒 从仂仆从亳 从舒亰于舒亠 从仂仄仗亳仍仂, 仂 仄亠仂亟 vaTest () 仄仂亢亠 于亰于舒 仆仍亠仄 亳仍亳 弍仂仍亠亠 舒亞仄亠仆仂于. 亠亰仍舒亠 v 仆亠磦仆仂 仂弍磦仍磳 从舒从 仄舒亳于 亳仗舒 int [ ]. 丐舒从亳仄 仂弍舒亰仂仄, 于仆亳 仄亠仂亟舒 vaTest () 亟仂仗 从 v 仂亠于仍磳 亳仗仂仍亰仂于舒仆亳亠仄 亳仆舒从亳舒 仂弍仆仂亞仂 仄舒亳于舒. 49
  • 50. 仍舒 亳 仄亠仂亟 亠仂亟 仗亠亠仄亠仆仆仄 亳仍仂仄 舒亞仄亠仆仂于 于 Java class VarArgs { static void vaTest(int ... v) { System.out.println("仂仍-于仂 舒亞仄亠仆仂于: " + v.length); for (int i=0;i<v.length;i++) { System.out.print (v[i] + " "); } public static void main(String args[]) { vaTest (10); //1 舒亞仄亠仆 vaTest (1, 2, 3); //3 舒亞仄亠仆舒 vaTest (); // 弍亠亰 舒亞仄亠仆仂于 } } 50
  • 51. 仍舒 亳 仄亠仂亟 亠仂亟 仗亠亠仄亠仆仆仄 亳仍仂仄 舒亞仄亠仆仂于 于 Java 于仂亟: 仂仍亳亠于仂 舒亞仄亠仆仂于: 1 10 仂仍亳亠于仂 舒亞仄亠仆仂于: 3 123 仂仍亳亠于仂 舒亞仄亠仆仂于: 0 51
  • 52. 仍舒 亳 仄亠仂亟 亠仂亟 仗亠亠仄亠仆仆仄 亳仍仂仄 舒亞仄亠仆仂于 于 Java 仄亠亠 仗舒舒仄亠仂仄 仗亠亠仄亠仆仆仂亶 亟仍亳仆 仄舒亳于 仄仂亢亠 仂亟亠亢舒 仂弍仆亠 仗舒舒仄亠. 亟仆舒从仂 仗舒舒仄亠 仗亠亠仄亠仆仆仂亶 亟仍亳仆 亟仂仍亢亠仆 弍 仗仂仍亠亟仆亳仄 仗舒舒仄亠仂仄, 仂弍磦仍亠仆仆仄 仄亠仂亟仂仄. 舒仗亳仄亠: int dolt(int a, int b, double , int ... vals) //于亠仆仂! int dolt (int a, int b, double , int ... vals, boolean stopFlag) // 仂亳弍从舒! 亠仂亟 亟仂仍亢亠仆 仂亟亠亢舒 仂仍从仂 仂亟仆亳 仗舒舒仄亠 亳仗舒 varargs. int dolt (int a, int b, double , int ... vals, double ... morevals) // 仂亳弍从舒! 52
  • 53. 舒从亠 仂仆亳亠 仗舒从亠舒 Java 仂弍亠仗亠亳于舒亠 仗亠亳舒仍仆亶 仄亠舒仆亳亰仄 亟仍 舒亰亟亠仍亠仆亳 仗仂舒仆于舒 亳仄亠仆 从仍舒仂于 仆舒 亳仄亠仆仂于舒仆仆亠 仂弍仍舒亳. 亅仂 仄亠舒仆亳亰仄 仆舒亰于舒亠 束仗舒从亠損 (packages). 舒从亠 仂 从仂仆亠亶仆亠 亟仍 从仍舒仂于, 于 仗亠亟亠仍舒 从仂仂仂亞仂 亟仂仍亢仆舒 仂舒仆 仆亳从舒仍仆仂 亳仄亠仆 从仍舒仂于. 弍舒 仂仄舒 仂仗亠亟亠仍亠仆亳 仗舒从亠舒: package <pkg_name>; 53
  • 54. 舒从亠 亠舒亳 仗舒从亠仂于 亠舒亳 仗舒从亠仂于: package pkg1[.pkg2[.pkg3]]; 丼仂弍 舒仆亳 仗舒从亠, Java 亳仗仂仍亰亠 从舒舒仍仂亞亳 舒亶仍仂于仂亶 亳亠仄. Class舒亶仍 亟仍 于亠 从仍舒仂于, 仗亳仆舒亟仍亠亢舒亳 从 仂亟仆仂仄 仗舒从亠, 亟仂仍亢仆 弍 仂舒仆亠仆 于 从舒舒仍仂亞亠, 仆舒亰于舒仆亳亠 从仂仂仂亞仂 仂于仗舒亟舒亠 亳仄亠仆亠仄 仗舒从亠舒 (亠亞亳 于舒亢亠仆). package java.awt.image; javaawtimage 舒亰仄亠亠仆亳亠仄 从仂仆 仍ミ頴笑 亳亠舒亳亳 仗舒从亠仂于 于 舒亶仍仂于仂亶 亳亠仄亠 仗舒于仍磳 仗亠亳舒仍仆舒 仗亠亠仄亠仆仆舒 仂从亢亠仆亳 CLASSPATH. 54
  • 55. 舒从亠 仄仗仂 仗舒从亠仂于 仂仍仆仂亠 亳仄 从仍舒舒 于从仍ム舒亠 于 亳亠舒亳 仗舒从亠仂于. 仄仗仂 从仍舒舒 亳仍亳 仗舒从亠舒: import pkg1[.pkg2].(classname|*); 1. 仄仗仂亳仂于舒仆亳亠 从仍舒舒 仆亳从舒从 仆亠 于仍亳磳 仆舒 仂于亠仆 亟仂仗舒 从 亠亞仂 仍亠仄亠仆舒仄 !!! 2. 仍ミ英 Java-仗仂亞舒仄仄 舒于仂仄舒亳亠从亳 亳仄仗仂亳亠 仗舒从亠 java.lang.* !!! 55
  • 56. 舒从亠 丕仂于仆亳 亟仂仗舒 亠仂仄 仗舒从亠仂于 package p1; package p2; public class A { public class D extends A { public int pub; } protected prot; public class E { int def; } private int priv; } public class B extends A { } public class C { } 56
  • 57. 舒从亠 丕仂于仆亳 亟仂仗舒 亠仂仄 仗舒从亠仂于 A B C D E public + + + + + protecte d + + + + - <default> + + + - - private + - - - - 57
  • 58. 舒从亠 丕仂于仆亳 亟仂仗舒 亠仂仄 仗舒从亠仂于 1. 仂仗 仆舒 仂于仆亠 从仍舒舒: - public - 从仍舒 于亳亟亠仆 于亠亰亟亠 - <default> - 从仍舒 于亳亟亠仆 于 仗亠亟亠仍舒 于仂亠亞仂 仗舒从亠舒 2. 仂仗 仆舒 仂于仆亠 仍亠仆仂于 从仍舒舒: 仂亟亳亳从舒仂 仆亳 仂仄 亢亠 从仍舒舒 仗舒从亠亠 仂亟从仍舒 于 亟亞仂仄 仗舒从亠亠 仂亳亰于仂仍仆亶 从仍舒 于 亟亞仂仄 仗舒从亠亠 public + + + + protected + + + - <default> + + - - private + - - 58
  • 59. 弌从舒 Java-仗仂亞舒仄仄 - 仗亠于仂亶 仂从亠 舒亶仍舒 仄仂亢亠 弍 1 仆亠仂弍磶舒亠仍仆亶 仂仗亠舒仂 package - 仍亠亟ム亳 仂从舒 仄仂亢亠 弍 1 亳仍亳 仆亠从仂仍从仂 仆亠仂弍磶舒亠仍仆 仂仗亠舒仂仂于 import - 舒仍亠亠 亳亟 仂仗亳舒仆亳 从仍舒仂于 亳 亳仆亠亠亶仂于 弌亠亟亳 从仍舒仂于, 仂仗亳舒仆仆 于 仂亟仆仂仄 舒亶仍亠, 仂仍从仂 仂亟亳仆 仄仂亢亠 弍 仂弍磦仍亠仆 仄仂亟亳亳从舒仂仂仄 public. 59