CuriousTim
CuriousTim

Reputation: 183

User defined package and classpath

I have three classes in a package called util, all public classes. However, when I try to compile a code that uses those classes, I get an error that says the classes are not public. I don't know what's wrong. The three classes are below:

package util;

class Address {

    private String address;

    public Address(){
        address = "Default";
    }

    public Address(String newAddress){
        address = newAddress;
    }

    public void setAddress(String newAddress){
        address = newAddress;
    }

    public String getAddress(){
        return address;
    }

}

The date class

package util;

class Date {

    private String Date;

    public Date(){
        Date = "Default";
    }

    public Date(String newDate){
        Date = newDate;
    }

    public void setDate(String newDate){
        Date = newDate;
    }

    public String getDate(){
        return Date;
    }

}

The name class

package util;

class Name {

    private String name;

    public Name(){
        name = "Default";
    }

    public Name(String newName){
        name = newName;
    }

    public void setName(String newName){
        name = newName;
    }   

    public String getName(){
        return name;
    }

}

Upvotes: 0

Views: 480

Answers (2)

João Silva
João Silva

Reputation: 91299

Those classes are not public, they are package-private, since you didn't specify any access level modifier. To make them public add the public access modifier to them:

public class Address {

Upvotes: 2

duffymo
duffymo

Reputation: 308763

Add "public" in front of all the class declarations. You made them all package private.

I don't know if this is a simplified example, but your design leaves a lot to be desired. All three of your classes, Date (not necessary), Name, and Address are the thinnest wrappers around the String class. I'd enrich the last two and eliminate the first. Anyone using your code will have to decide if you mean your Date or java.util.Date. Bad idea. Use the JDK java.util.Date instead.

Upvotes: 6

Related Questions