Суббота, 14 Декабря 2019, 20:48

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » Скриптовые языки программирования » LuaJava and Java abstract file (Использование абстрактного класса в LuaJava)
LuaJava and Java abstract file
Snake174Дата: Пятница, 14 Марта 2014, 06:11 | Сообщение # 1
участник
Сейчас нет на сайте
Всем привет.
Есть класс:
Код

public abstract class State
{
   public abstract void update();
   public abstract void draw();
}


Можно ли в LuaJava сделать что-то подобное?
Код

class "NewState"( State )

function NewState:update()
   ...
end

function NewState:draw()
   ...
end


Не следует обманывать инспектора
Pipmak Assistant
Love2D Exporter
Love2D-Helpers
Old Consoles Games
-l33t-h4xx-Дата: Пятница, 14 Марта 2014, 07:33 | Сообщение # 2
участник
Сейчас нет на сайте
Встроенной поддержки классов в Lua нет. Если тебе нужно классоподобное поведение - используй таблицы и метатаблицы.

Однако LuaJava позволяет связывать код Lua с нативными Java-классами (читай Lua Reference).
Последнее ты, скорее всего, знаешь.


Как правильно задавать вопросы

Сообщение отредактировал -l33t-h4xx- - Пятница, 14 Марта 2014, 07:39
Snake174Дата: Пятница, 14 Марта 2014, 07:53 | Сообщение # 3
участник
Сейчас нет на сайте
Спасибо за ответ.
Цитата -l33t-h4xx- ()
Последнее ты, скорее всего, знаешь.

Ну да. С обычными классами проблем нет, но никак не получается указать lua, что есть такой абстрактный класс State.


Не следует обманывать инспектора
Pipmak Assistant
Love2D Exporter
Love2D-Helpers
Old Consoles Games
-l33t-h4xx-Дата: Пятница, 14 Марта 2014, 08:06 | Сообщение # 4
участник
Сейчас нет на сайте
А для каких целей тебе абстрактный класс? Всё равно ты не сможешь изнутри LuaJava унаследоваться от него. И сами по себе абстрактные классы в Lua не очень нужны. Там нет проверки типов. Достаточно создать две таблицы с одноимёнными методами и полями, и полиморфизм возникает сам собой.

Как правильно задавать вопросы
Snake174Дата: Пятница, 14 Марта 2014, 08:15 | Сообщение # 5
участник
Сейчас нет на сайте
Цитата

А для каких целей тебе абстрактный класс?

У меня есть класс Scene, от которого будут наследоваться другие классы, типа MainMenu, Game и т.д. Просто хотел эти классы в луа скрипте создать. Но если есть какой-нибудь другой способ, буду рад выслушать biggrin


Не следует обманывать инспектора
Pipmak Assistant
Love2D Exporter
Love2D-Helpers
Old Consoles Games
ant0NДата: Пятница, 14 Марта 2014, 10:32 | Сообщение # 6
постоянный участник
Сейчас нет на сайте
не знаю как в LuaJava, но в lua это можно сделать так:
1) Создадим главный класс
Код
class_Scene = {} -- да, класс это просто таблица

--тело класса
function class_Scene:new(name)
        local obj = {} --типо инкапсуляция
        obj.name = name
        obj.size = FullHD

        setmetatable(obj,self)     
        self.__index = self
        return obj
end


1.1) Создадим один метод главного класса
Код
function class_Scene:getName()
        return self.name
end


2) Создадим второй класс
Код
class_mainMenu = {}


2.1) создадим метод для второго класса
Код
function class_mainMenu:ololo()
        return "ololo"
end


2.2) Наследуемся от первого класса
Код
setmetatable(class_mainMenu,{__index = class_Scene})


3) Инициализируем классы и проверяем
3.1) создаем экземпляр первого класса
Код
scene = class_Scene:new("Game")
print( scene:getName() ) -- результат - Game


3.2) создаем экземпляр второго класса
Код
menu = class_mainMenu:new("Menu")
print( menu:getName() ) -- результат - Menu
print( menu:ololo() ) -- результат - ololo


Blender 3D, Godot Engine, LUA

Сообщение отредактировал ant0N - Пятница, 14 Марта 2014, 10:36
Форум игроделов » Программирование » Скриптовые языки программирования » LuaJava and Java abstract file (Использование абстрактного класса в LuaJava)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2019 Рейтинг