В Java, как я делаю класс с частным конструктором, суперкласс которого также имеет частного конструктора?

Вы можете структурировать свою функцию поиска в отдельном файле PHP, чтобы иметь чистый маршрут URL. Обратите внимание, что этот запрос будет подвержен SQL-инъекциям. Это всего лишь общий пример

, например

//  search.php
//  GET request
    function SearchLocations() {
        $conn = new mysqli('localhost', 'root', '', 'tutors') or die ('Cannot connect to db');
        $result = $conn->query("select id,name,Location_tags from tutor_location where Location_tags='%". 

Вы можете структурировать свою функцию поиска в отдельном файле PHP, чтобы иметь чистый маршрут URL. Обратите внимание, что этот запрос будет подвержен SQL-инъекциям. Это всего лишь общий пример

, например

[110]

HTML:

<input type="text" name="location_input" id="location_input">
<select name="locations" id="locations">

Тогда в вашем коде JavaScript:

 $("#location_input").keydown(function(){
            const location = $("#location_input").val();
            $("#locations").hmlt(''); //reset dropdown
            // do ajax call to get locations
            $.ajax({
                url: 'search.php',  //replace this with your route of the search function
                data: {location}, //pass location as body data
                dataType: 'json' //expect a json response back
                success: function(data) {
                    data.forEach(function(el) { //loop over the json response
                        let option = `<option id=${el.id} value=${el.name}>${el.name}</option>`
                        $("#locations").append(option); //append locations to select dropdown
                    });
                },
                error: function(err) {  //error functions
                    console.log(err);
                    alert("Error")
                }
            });
        });
GET['location']."%'"); $locations = []; while ($row = $result->fetch_assoc()) { $locations[] = $row; } return json_encode($locations); }

HTML:

<input type="text" name="location_input" id="location_input">
<select name="locations" id="locations">

Тогда в вашем коде JavaScript:

 $("#location_input").keydown(function(){
            const location = $("#location_input").val();
            $("#locations").hmlt(''); //reset dropdown
            // do ajax call to get locations
            $.ajax({
                url: 'search.php',  //replace this with your route of the search function
                data: {location}, //pass location as body data
                dataType: 'json' //expect a json response back
                success: function(data) {
                    data.forEach(function(el) { //loop over the json response
                        let option = `<option id=${el.id} value=${el.name}>${el.name}</option>`
                        $("#locations").append(option); //append locations to select dropdown
                    });
                },
                error: function(err) {  //error functions
                    console.log(err);
                    alert("Error")
                }
            });
        });
5
задан Hans Sjunnesson 20 January 2009 в 16:44
поделиться

4 ответа

Вы не можете. Необходимо сделать пакет конструктора Foo частным по крайней мере (Хотя я, вероятно, просто сделал бы, он защитил.

(Редактирование - Комментарии в этом сообщении делают правильное замечание),

10
ответ дан 18 December 2019 в 07:57
поделиться

Это - на самом деле признак невоспитанности наследования, названного наследованием реализации. Или исходный класс не был разработан, чтобы быть наследованным и таким образом принял решение использовать частного конструктора, или что весь API плохо разработан.

Фиксация для этого не должна выяснять способ наследоваться, но видеть, можно ли составить объект вместо наследования и сделать так через интерфейсы. Т.е. класс Foo является теперь интерфейсом Foo с FooImpl. Затем интерфейсная панель может расширить Foo с BarImpl, который не имеет никакого отношения к FooImpl.

В BarImpl Вы могли, если Вы хотите сделать некоторое повторное использование кода, иметь FooImpl внутри как участник, но это полностью до реализации, и не будет выставлен.

7
ответ дан 18 December 2019 в 07:57
поделиться

Вы не можете вызвать конструктора Object непосредственно от Панели, в то время как это - подкласс Foo, это имело бы к через конструктора Foo, который является частным в этом случае.

Когда Вы объявляете частного конструктора Foo, это не создает общедоступного конструктора по умолчанию. Так как Панель должна вызвать конструктора Foo's, не возможно оставить это частным. Я предложил бы, как другие имеют при использовании, защищенном вместо частного.

1
ответ дан 18 December 2019 в 07:57
поделиться

Вы не сможете создать экземпляр Панели столько, сколько у Foo есть частный конструктор. Единственным путем Вы смогли бы сделать это, то, если у Foo был защищенный конструктор.

2
ответ дан 18 December 2019 в 07:57
поделиться
Другие вопросы по тегам:

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