Class members and their
"visibility"
-
Review:
-
Class member =
a variable or
a method defined
in a class
public class MyClass
{
private int x; // Variable - class member
public int get() { ... } // Method - class member
}
|
|
-
Visibility modifiers can be
used to
specify the
visibility
(= accessibility)
of
members
- There are
4
visibility
(= accessibility) modifiers
in Java:
public: accessible from any class (discussed)
private: accessible from inside same class (discussed)
[empty]: accessible from inside same package (Discuss now)
protected: accessible from subclass (Later)
|
|
Review:
the effect of
public and
private
visibility (access) qualifiers
public members
can
be accessed from
outside its
class
private members
cannot
be accessed from
outside its
class
DEMO:
demo/10-classes/17-private/Demo.java + C1.java
(Show
compile errors)
Why
do programming languages provide
different
accessibility modifiers
- Program code inside
a class is
usually written by
the
same
programmer
- Program code in
different
classes
may be
written by
different
programmers
- A common cause for
programmong errors a
made by
different programmer
Example:
-
Limiting access to
variables
(with
private) will
reduce
programmming errors
by another programmer
|
Java
packages
- Some problems are
too complex
that
they cannot be solved
by methods inside
one single
class
- A
complex problem
may need to use
multiple classes
-
Background information:
- A
Package in
Java is
used to
organize multiple classes
used to solve a
complex problem
- The facilitate (= make it easier)
the coorperation of
multiple
classes:
-
Java can
allow
methods in
classes
within the
same
package to
access
each others'
members (variables and methods)
directly
|
|
How to
create a package in BlueJ
How to create a
class
inside a
package p1 in BlueJ
The default
access modifier
- A member in a
class has
the
default
access
if
no
access modifier is
specified
- Example: use BlueJ and
create this
class C1 inside
package p1:
package p1; // Inserted by BlueJ !
public class C1
{
public int x1;
int x2; // Default (= package) access modifier
private int x3;
public void m1() {}
void m2() {} // Default (= package) access modifier
private void m3() {}
}
|
- The members
variable x2 and
method m2() has
no
access modifier
- They will be assigned with
the
default
access modifier
|
|
The
default
access modifier
The
default
access modifier
DEMO:
demo/10-classes/18-package/p1/Demo.java
+ C1.java
(use BlueJ or
javac -cp ..)
The
default
access modifier
DEMO:
demo/10-classes/18-package/Demo.java
+ p1/C1.java
Summary
Members with the
default access modifier can
be accessed from
methods in
classes inside the
same package:
❮
❯