В Ubuntu 16.10, можно легко установить его от терминала со следующей командой:
sudo apt install gimp
Для обновления существующей установки калеки выполните следующую команду в терминале:
sudo apt update && apt upgrade -y
, Если требуется удалить калеку, но сохранить настройки (если Вы планируете переустановку некоторого другого времени, например), выполните следующую команду в терминале:
sudo apt remove gimp
, Если требуется удалить калеку и удалить настройки, выполните следующую команду в терминале:
sudo apt purge gimp
Проще говоря, наследование - это концепция того, что одна вещь приобретает свойства или поведение чего-то другого. Сказать, что A наследует от B, означает, что A является типом B. Bird наследует от Animal, потому что Bird является типом Животное - оно может делать то же самое, но немного больше (или по-разному)!
В JavaScript это отношение немного сложно определить, но оно соответствует синтаксису. Вы должны использовать специальный объект с именем prototype
, который присваивает свойства типу , например Animal. Только function
имеют prototype
, поэтому вы должны сначала создать функцию:
function Animal() {}; // This is the Animal *Type*
Animal.prototype.eat = function () {
alert("All animals can eat!");
};
Теперь, чтобы создать тип , который наследуется от Animal, вы также используете prototype
объект, но на этот раз принадлежащий другому типу , например Птица:
function Bird() {}; // Declaring a Bird *Type*
Bird.prototype = new Animal(); // Birds inherit from Animal
Bird.prototype.fly = function() {
alert("Birds are special, they can fly!");
};
Эффект этого состоит в том, что все создаваемые вами Птицы (называемые экземпляром Птицы) все имеют свойства животных, но они также имеют дополнительные .fly()
:
var aBird = new Bird(); // Create an instance of the Bird Type
aBird.eat(); // It should alert, so the inheritance worked
aBird.fly(); // Important part of inheritance, Bird is also different to Animal
var anAnimal = new Animal(); // Let's check an instance of Animal now
anAnimal.eat(); // Alerts, no problem here
anAnimal.fly(); // Error will occur, since only Birds have fly() in its prototype
Хорошее объяснение Роберта о наследовании в Javascript здесь
Способ наследования работает в JavaScript, что это prototype
, а не class-based
.
Например,
function Being () {
this.living = true;
}
Being.prototype.breathes = function () {
return true;
Объект, который наследует Бытие
Robert.prototype = new Being;
function Robert () {
this.blogs = true;
}
Robert.prototype.getsBored = function () {
return "You betcha";
};
Итак, в основном, если мы создадим новый экземпляр объекта Роберта и вызовем некоторые из его методы, результат будет:
// Create an instance of the Robert object
var me = new Robert();
/*
Returns "You betcha" as it's a method
belonging to the Robert object
*/
me.getsBored();
/*
Returns true. Since the Robert object
doesn't have a breathes method of
its own, it goes back in the
prototype chain to its parent
object, Being, and finds the
method there
*/
me.breathes();
Также хорошо читается наследование JavaScript: Наследование JavaScript
Его простое наследование означает: «объекты / классы наследуются от других объектов / классов» через прототипы
, например:
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
}
Person.prototype.nationality = "English";