Model for different kinds of print jobs
Design

you should consider to define the properties of the page in factory, that's where it should be located.

public PageBase GetPage(String pageType) {
    switch (pageType.toUpperCase()) {
        case "A4": return new Page(0.15, 0.25, 0.10, 0.20);
}


Programming

 1. Page

you should not try to subclass the page since it is not required, the only difference between each page are the prices (so far). Therefore you don't need subclasses - it is just a page (not a base Page or anything else)

And even more you should could instanciate the class with all properties during construction (as shown above, dependency injection)

public class Page {

    private final double blackWhiteSinglePageUnitCost;
    private final double colorSinglePageUnitCost;
    private final double blackWhiteDoublePageUnitCost;
    private final double colorDoublePageUnitCost;

    public Page(double bwSingle, double colorSingle, double bwDouble, double colorDouble){
        blackWhiteSinglePageUnitCost= bwSingle;
        colorSinglePageUnitCost= bwDouble;
        blackWhiteDoublePageUnitCost= bwSingle;
        colorDoublePageUnitCost= colorDouble;
    } 


what can be kept ist GetCost but should be renamed int getCost() but you can totally skip CalculateUnitPrice, see below

 2. PageType

if you use a certain format you should use Enums to define the Format of the sheet. that would free you from abusing Strings as datatypes

enum PageType {A4, A5, LETTER }; 


 3. bringing things together

when we use all these hints from above we have to adjust some more code, to make the programm run again

Page.class must be modified we can calculate the price on-the-fly because we already know anything required to calculate the price:

public double getCost(int total, int color, boolean isSingleSided){
    int bw = total - color;
    if(isSingleSided){
        return bw * blackWhiteSinglePageUnitCost + color * colorSinglePageUnitCost ;
    else{
        return bw * blackWhiteDoublePageUnitCost + color * colorDoublePageUnitCost ;
    }

}


PageFactorymust be modified - first the method signature must be java conform, namely getPage not GetPage. then you switch over the enum type instead of an String. That lets you handle invalid inputs.

public Page getPage(PageType pageType) { 
    switch (pageType) {
        case PageType.A4:
            return ...;   
        case PageType.A5:
            return ...;   
        case PageType.LETTER:
            return ...;            
    }
}


if you use this in action (in your main method ) it would be finally that appearance:

public class Main {
    public static void Main() {
        PageFactory pageFactory = new PageFactory();
        Page page = pageFactory.getPage(PageType.A4);
        double cost = page.getCost(0,0,false);
    }
}