Как можно передавать в метод объекты разных классов?
Те объекты которые ты хочешь передавать - должны ли они по логике твоей программы иметь общие методы (чтобы воспользоваться ТОЛЬКО ими в методе, в который ты передаешь объект) или ты хочешь передавать совершенно разные объекты?
Update:
смотри, есть такая штука как интерфейс
Например есть 2 класса Cat и Dog. И есть действия которые и тот и другой обязаны делать (по разному) но с определенным результатом. Например это действие - поедание котлет, при этом если есть результат (то он должен быть единообразным) или его быть не должно вовсе (void). Таким образом классы должны выглядеть примерно так (опуская другие вещи)class Cat{
 public int eatBeaf(int weight){ 
  //тут описываем съедение
  
  return result; //результат - продукт переработки котлет
 }
}

class Dog{
 public int eatBeaf(int weight){ 
  //тут описываем съедение
  
  return result; //результат - продукт переработки котлет
 }
}
И допустим у тебя есть Бабуля, которой ты передаешь животное на выходные и она должна будет их кормить периодически. Согласись - бабуле пофигу кто будет пожирать котлеты, она не хочет кормить их по разному, ей важно только то, что бы они ели котлеты и она убирала продукты пищеварения.
Соответственно иметь 2 метода у бабули не хочется:class GrandMa{
 public void feedCat(Cat cat){}
 public void feedDog(Dog dog){}
}
Вот тут и появляются интерфейсы. Мы видим, что и кот и пес жрут котлеты. Давай скажем что они как животные должны их (котлеты) поедать - это интерфейс.interface BeafEater{
  int eatBeaf(int weight);
 }
//и скажем что и кот и пес - пожиратели котлет и они умеют их есть

class Cat implements BeafEater{
 public int eatBeaf(int weight){ 
  //тут описываем съедение
  
  return result; //результат - продукт переработки котлет
 }
}

class Dog implements BeafEater{
 public int eatBeaf(int weight){ 
  //тут описываем съедение
  
  return result; //результат - продукт переработки котлет
 }
}
Все, теперь бабуля будет рада она будет рассматривать животных как пожирателей котлет, а не как кота или собаку.class GrandMa{
 public void feedBeafEater(BeafEater BeafEater){
   int weightBeaf = 5;
   int shit = beafEater.eatBeaf(weightBeaf ); //кормим поедателя котлет, колучаем какахи
   cleanToilet(shit ); //бабушка убирает какахи
}

}
Все, просто передаешь в бабушке кота или пса и она их кормитpublic static void main(String[] args){

 GrandMa grandMa = new GrandMa();
 Cat cat = new Cat();
 Dog dog = new Dog;
 
//напоминаю и кот и пес - рассматриваются бабушкой как пожиратели котлет, ей важно чтобы они поодерживали определенный интерфейс (умели делать определенные вещи)
grandMa.feedBeafEater(cat);
grandMa.feedBeafEater(dog);

}
а в чем проблема? Передаете, потом через точку обрщаетесьpublic static double c(NJTax objNJT, Tax objT){
        return objNJT.calculateTax() + objT.calculateTax();
    }
    public static void main(String[] args) {
        NJTax NJT = new NJTax(65000);
        Tax T = new Tax();
        
        c(NJT, T);
    }