30. package foo;
import bar;
class Foo {
bar.Bar x;
function doFoo() {
x.process();
}
}
30
package bar;
class Bar {
function process() {
// do something...
}
}
31. package foo;
import bar;
class Foo {
bar.Bar x;
function doFoo() {
x.process();
}
}
31
package bar;
class Bar {
function process() {
// do something...
}
}
foo bar = foo → bar
32. package foo;
import bar;
class Foo {
bar.Bar x;
function doFoo() {
x.process();
}
}
32
package bar;
class Bar {
function process() {
// do something...
}
}
foo bar = foo → bar
33. package foo;
import bar;
class Foo {
bar.Bar x;
function doFoo() {
x.process();
}
}
33
package bar;
class Bar {
function process() {
// do something...
}
}
foo → bar
foo → bar
34. package foo;
class Foo {
Buz x;
function doFoo() {
x.process();
}
}
interface Buz {
function process();
}
34
package bar;
import foo;
class Bar implements foo.Buz {
function process() {
// do something...
}
}
35. package foo;
class Foo {
Buz x;
function doFoo() {
x.process();
}
}
interface Buz {
function process();
}
35
package bar;
import foo;
class Bar implements foo.Buz {
function process() {
// do something...
}
}
36. package foo;
class Foo {
Buz x;
function doFoo() {
x.process();
}
}
interface Buz {
function process();
}
36
package bar;
import foo;
class Bar implements foo.Buz {
function process() {
// do something...
}
}
foo bar = foo → bar
37. package foo;
class Foo {
Buz x;
function doFoo() {
x.process();
}
}
interface Buz {
function process();
}
37
package bar;
import foo;
class Bar implements foo.Buz {
function process() {
// do something...
}
}
bar foo = foo ← bar
38. package foo;
class Foo {
Buz x;
function doFoo() {
x.process();
}
}
interface Buz {
function process();
}
38
package bar;
import foo;
class Bar implements foo.Buz {
function process() {
// do something...
}
}
foo → bar
foo ← bar
73. package foo;
class Foo {
Buz x;
function doFoo() {
x.process();
}
}
interface Buz {
function process();
}
73
package bar;
import foo;
class Bar implements foo.Buz {
function process() {
// do something...
}
}