Object-Oriented Programming with Java Lecture Notes

5 February 2008 • Classes, Part 2


Outline

Source Program Structure

Executable Structure

Compilation

Development Structure

Monolithic Problems

Packages

Accessing Classes

Class Access

Scope

Scopes So Far

The General Questions

Package Scope and Classes

Package Scope Example.

$ ls
A  B

$ ls A
C1.java

$ ls B
C2.java

$ 

a simple pair of files

Package Scope Example..

$ cat A/C1.java 
package A;
class C1 { }

$ cat B/C2.java
package B;
class C2 { }
class C3 { 
  B.C2 c2;
  C2 c3;  
  A.C1 c1; 
  }

$ 

packages and class files

Package Scope Example...

$ javac B/C2.java
B/C2.java:8: A.C1 is not public in A; 
cannot be accessed from outside package
  A.C1 c1;
   ^
1 error

$ 

Package Scope Example....

$ cat A/C1.java 
package A;
class C1 { }

$ cat B/C2.java
package B;
class C2 { }
class C3 { 
  B.C2 c2;
  C2 c3;
  A.C1 c1;
  }

$ 

packages and class files

Widening Package Scope

Public Class Naming

Public Scope Example.

$ ls
A  B

$ ls A
C1.java

$ ls B
C2.java

$ 

a simple pair of files

Public Scope Example..

$ cat A/C1.java 
package A;
public class C1 { }

$ cat B/C2.java
package B;
class C2 { }
class C3 { 
  B.C2 c2;
  C2 c3;  
  A.C1 c1; 
  }

$ 

packages and class files

Public Scope Example...

$ javac B/C2.java

$ 

successful inter-package access

Observations

The Default Package

Abbreviating Package Qualification

Import Example

$ cat B/C2.java
import A.C1;
class C2 { }
class C3 { 
  C2 c2;
  C2 c3;  
  C1 c1; 
  }

$ javac B/C2.java

$ 

packages and class files

Global Imports

Mapping Packages

!! Warning !! Warning !!

Package Mapping Example.

$ ls
A

$ ls A
C1.java
C2.java

$ 

a simple pair of files

Package Mapping Example..

$ cat A/C1.java 
package A;
class C1 { }

$ cat A/C2.java
class C2 { C1 c1; }

$ 

packages and class files

Package Mapping Example...

$ javac A/C2.java
A/C2.java:1: cannot find symbol
symbol  : class C1
location: class C2
class C2 { C1 c1; }
           ^
1 error

$ 

Hierarchical Packages

Imports and Nesting

No Really, Where are the Packages?

The -classpath Option

Classpath Example.

$ ls 
A  B

$ cat A/Ca.java
package Ca;
public class Ca { }

$ cd B

$ cat Cb.java
class Cb { A.Ca ca; }

$ 

a simple pair of files

Classpath Example..

$ javac Cb.java
Cb.java:1: package A does not exist
class Cb { A.Ca ca; }
            ^
1 error

$ 

Classpath Example...

Classpath Example....

$ javac -classpath .. Cb.java

$ 

The CLASSPATH Environment

Method Scope

Method Scope Example..

$ cat A/Ca.java
package A;
public class Ca { 
  public void yes() { }
  void no() { }
  }

$ cat B/Cb.java
import A.Ca;
class Cb { 
  void blue() {
    Ca ca = new Ca();
    ca.yes();
    ca.no();
    }
  }

$ 

Method Scope Example.


$ javac B/Cb.java
B/Cb.java:7: no() is not public in A.Ca; 
cannot be accessed from outside package
    ca.no();
      ^
1 error

$ 

Private Method Scope

Instance-Variable Scope

Class and Instance Methods

Class Methods

Class Method Access

Class vs. Instance Methods

Method-Access Example

class blob {

  static void m1() { }

  void m2() { }

  static void m3() {
    m1();
    blob.m1();

    m2();

    blob b = new blob();
    b.m2();
    }
  }

Java Programs

Class and Instance Variables

Comments

Javadoc

Javadoc Comments

Class Comments

Method Comments

Instance-Variable Comments

Other Comment Types

Running Javadoc

Javadoc Quirks

Generalizing Javadoc


This page last modified on 31 January 2008.

This work's CC license.