Расширьте класс Java из одного файла в другом файле Java

Более полное решение, которое получает следующую букву в соответствии с тем, как MS Excel нумерует его столбцы ... A B C ... Y Z AA AB ... AZ BA ... ZZ AAA

Это работает с маленькими буквами, но вы можете легко расширить его и для заглавных букв.

getNextKey = function(key) {
  if (key === 'Z' || key === 'z') {
    return String.fromCharCode(key.charCodeAt() - 25) + String.fromCharCode(key.charCodeAt() - 25); // AA or aa
  } else {
    var lastChar = key.slice(-1);
    var sub = key.slice(0, -1);
    if (lastChar === 'Z' || lastChar === 'z') {
      // If a string of length > 1 ends in Z/z,
      // increment the string (excluding the last Z/z) recursively,
      // and append A/a (depending on casing) to it
      return getNextKey(sub) + String.fromCharCode(lastChar.charCodeAt() - 25);
    } else {
      // (take till last char) append with (increment last char)
      return sub + String.fromCharCode(lastChar.charCodeAt() + 1);
    }
  }
  return key;
};
57
задан flurbius 10 February 2018 в 04:57
поделиться

4 ответа

Просто поместите два файла в один каталог. Вот пример:

Person.java

public class Person {
  public String name;

  public Person(String name) {
    this.name = name;
  }

  public String toString() {
    return name;
  }
}

Student.java

public class Student extends Person {
  public String somethingnew;

  public Student(String name) {
    super(name);
    somethingnew = "surprise!";
  }

  public String toString() {
    return super.toString() + "\t" + somethingnew;
  }

  public static void main(String[] args) {
    Person you = new Person("foo");
    Student me = new Student("boo");

    System.out.println("Your name is " + you);
    System.out.println("My name is " + me);
  }
}

Running Student (поскольку он имеет главную функцию) дает желаемый результат:

Your name is foo
My name is boo  surprise!
60
ответ дан 24 November 2019 в 19:32
поделиться

Java не использует include, как это делает C. Вместо этого java использует концепцию, называемую classpath, список ресурсов, содержащих классы java. JVM может получить доступ к любому классу в пути к классам по имени, поэтому, если вы можете расширять классы и ссылаться на типы, просто объявляя их. Завершающим элементом оператора include java является «импорт». Поскольку классы разбиты на пространства имен, такие как foo.bar.Baz, если вы находитесь в пакете qux и хотите использовать класс Baz без необходимости использовать его полное имя foo.bar.Baz, тогда вам нужно использовать Оператор импорта в начале вашего java-файла, например: импорт foo.bar.Baz

19
ответ дан 24 November 2019 в 19:32
поделиться

А вам нет.

3
ответ дан 24 November 2019 в 19:32
поделиться

Чего не хватает во всех объяснениях, так это того факта, что Java имеет строгое правило имя класса = имя файла . Это означает, что если у вас есть класс «Person», он должен находиться в файле с именем «Person.java». Следовательно, если один класс пытается получить доступ к «Человеку», имя файла не обязательно, потому что оно должно быть «Person.java».

При переходе на C / C ++ у меня точно такая же проблема. Ответ - создать новый класс (в новом файле, соответствующем имени класса) и создать публичную строку. Это будет ваш "заголовочный" файл. Затем используйте это в своем основном файле, используя ключевое слово extends.

Вот ваш ответ:

  1. Создайте файл с именем Include.java. В этот файл добавьте следующее:

     открытый класс Include {
     общедоступная статическая строка MyLongString = "abcdef";
    }
    
  2. Создайте другой файл, скажем, User.java. В этом файле поместите:

     import java.io. *;
    
    открытый класс User extends Include {
     System.out.println (Включить.MyLongString);
    }
    
27
ответ дан 24 November 2019 в 19:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: