Все знают, что Java-это объектно-ориентированный язык программирования. В мире Java все является объектом. Как вы представляете объект в этой Java? Сорт
Мы знаем, что объекты в Java являются подклассами объектного класса, поэтому сегодня мы вместе будем изучать класс в Java.
Задайте небольшой вопрос: объекты классов? Чей объект класс? Ответ: класс - это объект, объект силы класса Java.lang.class.
пакет com.edu.hpu;
открытый тест класса {public static void main (string [] args) {// создание объекта New foo foo = new foo (); // Получить экземпляр класса класса, создавая метод getClass () класса объекта C1 = foo.getClass (); // любой класс имеет неявную статическую переменную класс класса C2 = foo.class; // C1 и C2 представляют тип класса Foo Class (тип класса) System.out.println (c1 == c2); Класс C3 = NULL; try {// третий метод для получения типа класса класса C3 = class.forname ("com.edu.hpu.foo"); } catch (classnotfoundexception e) {e.printstacktrace (); } System.out.println (c1 == c3); try {// создать объект экземпляра класса через тип класса Foo C4 = (foo) c1.newinstance (); c4.start (); } catch (instantiationException e) {e.printstacktrace (); } catch (allogalaccessexception e) {e.printstacktrace (); }}} class foo {public void start () {System.out.println ("foo class"); }}Через приведенный выше код, есть ли у вас более глубокое понимание класса? Мы можем создавать объекты экземпляра класса через новое ключевое слово, и мы также можем создать объекты экземпляра класса через тип класса. Существует три формы вышеуказанных методов для получения типов классов класса. Они получают только один тип класса, так что C1 == c2 == c3: true.
После краткого введения выше, есть ли у вас более глубокое понимание класса в Java? Давайте используем небольшой пример, чтобы ввести фактическое использование типов классов и экземпляров классов.
классные офисы {public static void main (string [] args) {if ("word" .equals (args [0])) {word w = new word (); W.Start (); } if ("Excel" .equals (args [0])) {Excel e = new Excel (); e.start (); }}}Давайте посмотрим на приведенный выше код. Когда мы компилируемся, может ли это пройти нормально? Здесь нам нужно поговорить о компиляции и эксплуатации: класс, загруженный во время компиляции, представляет собой статический класс загрузки; Класс, загруженный во время выполнения, представляет собой класс динамической загрузки. Class.forname ("Полное имя класса L"); Не только представляет тип класса, но и представляет собой класс динамической загрузки. В приведенном выше примере мы не обязательно используем Word и Excel, но когда мы компилируемся, если Word и Excel не существуют, то произойдет ошибка. Итак, мы реализуем вышеуказанную логику, динамически загрузив тип класса.
класс Office {public static void main (string [] args) {try {class c = class.forname (args [0]); Официальный ОА = (Официальный) c.newinstance (); oa.write (); } catch (Exception e) {e.printstackTrace ();}}} Интерфейс офицер {public void write ();} класс слов реализует офицер {public void write () {System.out.println ("word ... start ..."); }} класс Excel реализует офицер {public void write () {System.out.println ("Excel..Write .."); }}Таким образом, мы можем динамически добавлять классы по мере необходимости, чтобы облегчить расширение функций нашего приложения.