19. package foo;
import bar;
class Foo {
bar.Bar x;
function doFoo() {
x.process();
}
}
19
package bar;
class Bar {
function process() {
// do something...
}
}
20. package foo;
import bar;
class Foo {
bar.Bar x;
function doFoo() {
x.process();
}
}
20
package bar;
class Bar {
function process() {
// do something...
}
}
foo bar = foo → bar
21. package foo;
import bar;
class Foo {
bar.Bar x;
function doFoo() {
x.process();
}
}
21
package bar;
class Bar {
function process() {
// do something...
}
}
foo bar = foo → bar
22. package foo;
import bar;
class Foo {
bar.Bar x;
function doFoo() {
x.process();
}
}
22
package bar;
class Bar {
function process() {
// do something...
}
}
foo → bar
foo → bar
23. package foo;
class Foo {
Buz x;
function doFoo() {
x.process();
}
}
interface Buz {
function process();
}
23
package bar;
import foo;
class Bar implements foo.Buz {
function process() {
// do something...
}
}
24. package foo;
class Foo {
Buz x;
function doFoo() {
x.process();
}
}
interface Buz {
function process();
}
24
package bar;
import foo;
class Bar implements foo.Buz {
function process() {
// do something...
}
}
25. package foo;
class Foo {
Buz x;
function doFoo() {
x.process();
}
}
interface Buz {
function process();
}
25
package bar;
import foo;
class Bar implements foo.Buz {
function process() {
// do something...
}
}
foo bar = foo → bar
26. package foo;
class Foo {
Buz x;
function doFoo() {
x.process();
}
}
interface Buz {
function process();
}
26
package bar;
import foo;
class Bar implements foo.Buz {
function process() {
// do something...
}
}
bar foo = foo ← bar
27. package foo;
class Foo {
Buz x;
function doFoo() {
x.process();
}
}
interface Buz {
function process();
}
27
package bar;
import foo;
class Bar implements foo.Buz {
function process() {
// do something...
}
}
foo → bar
foo ← bar
53. package foo;
class Foo {
Buz x;
function doFoo() {
x.process();
}
}
interface Buz {
function process();
}
53
package bar;
import foo;
class Bar implements foo.Buz {
function process() {
// do something...
}
}