Рубрики
Без рубрики

Покемоны энсинам: КАКАШКИ

Классы на Java Как и прежде сказал, все в Java-это классы, это можно увидеть на практике… Помечено ооп, java, программирование, производительность.

И, как прежде сказано, все в Java-это классы, , это можно увидеть на практике, вскоре в метод main(String args[]) , этот метод находится в классе как можно увидеть в линии 2.

// Program.java
public class Program {
    public void main(String[] args) {
        System.out.println("Hello World");
    }
}

Мы можем создавать наши собственные классы и методы, просто создайте файл с именем класса, необходимо, с расширением .java и заполняет его структуры, что мы видели вокруг метода main.

// HelloWorld.java
public class HelloWorld {

}

Для создания экземпляра:

// Program.java
public void main(String[] args) {
    HelloWorld hello = new HelloWorld();
}

Стоит отметить, что это хорошая практика использовать PascalCase идентификатор(имя) классов.

Класс-это набор атрибутов и методов в Java, мы можем установить атрибуты класса через свои переменные . Для определения переменной, принадлежащие к классу, мы должны объявить его тип, а затем и ваш идентификатор Тип Идентификатора; , как показано ниже:

// HelloWorld.java
public class HelloWorld {
    String message;
    int count;
}

Это хорошая практика использовать camelCase в идентификаторов атрибутов.

Neste exemplo, definimos do – это атрибут класса “Привет, мир”: сообщение, типо Строка количество сообщений, типо int . Типы в Java могут быть примитивный , или Классы-Оболочки ,, , включают методы обработки данных , Wrapper Классы состоят из рода в CamelCase , , кроме int, его wrapper class Integer , Строка, o que нао поссуи ума версао примитив e Символ класса-оболочки кода символа . Доступные типы являются:

  • String : Строка.
  • short : целые Числа(2 байта).
  • int : целые Числа(4 байта).
  • long : Целые числа до 8 байт.
  • float : Числа с плавающей точкой(4 байт).
  • double : Числа с плавающей точкой двойной точности(8 байт).
  • byte : Представляет собой 8-разрядный.
  • char : Представляет один символ.
  • Boolean : Представление о доблести логико 1 – Правда или 0 – Ложь.

Когда мы имеем дело с классами, которые будут сохранены, это хорошая практика, чтобы использовать Классы-Оболочки, а не примитивных типов, чтобы код был более близок будет сохранялось.

Помимо типа, а также можно задать область действия атрибута или класса с помощью Модификаторов.

Модификаторы несут ответственность за управление доступ или изменять функции, классы, атрибуты и методы . Они делятся на 2 группы:

  • Модификаторы доступа – Управление уровнем доступа.
  • Не модификаторы доступа – Предоставляют другие возможности.

Модификаторы Доступа.

Для классов, мы можем использовать:

  • public: класс, является доступным для любого другого класса.
  • default : класс доступен только для других классов в том же package. Используется, когда не задает модификатор .

Атрибуты , методов строителей , мы можем использовать следующие:

  • public: – Это доступное для всех классов.
  • private: доступен только из класса, который и заявил.
  • protected: доступна только в том же package классов и дочерей.
  • default: доступен только в том же package.

Например:

// HelloWorld.java
public class HelloWorld {
    public String message;
    private int count = 5;
}

Модификаторы Не Бесплатный.

Для классов, мы можем использовать:

  • окончательный : Класс не может быть унаследован других классов.
  • abstract : класс не может быть использован для создания объектов (Для доступа абстрактный класс, он должен быть унаследован другим классом).

Атрибуты и методики, мы можем использовать один из следующих:

  • финал: Атрибуты и методы не могут быть перезаписаны или изменены.
  • static: Атрибуты и методы класса, а не объекта, то есть, для их использования не нужно создавать экземпляр объекта.
  • abstract: Могут быть использованы только в методы, абстрактные классы. Метод этот модификатор не есть тело, ваше тело это осуществляется класс что наследует.
  • переходные: Атрибуты и методы, которые игнорируются, когда объект, который содержит сериализованный.
  • synchronized: Методы могут быть доступны только одним потоком одновременно.
  • volatile: значение этого атрибута должно храниться в основной памяти.

Мы также можем связать модификаторы доступа с модификаторами, не :

// HelloWorld.java
public class HelloWorld {
    public static final String message = "Hello World";
}

Os métodos определяет правила поведения в классе , и определяет, как изменить атрибуты ( получатели и установщики ). Для определения метода просто определить тип вашего возвращения (Любой примитивный тип, wrapper класса, или класса), имя метода , и параметров метод получает в скобках… инструкции, выполняемые по методу являются определены между ключи сразу после закрытия скобки параметров .

// HelloWorld.java
public class HelloWorld {
    public static final String message = "Hello World";

    // Método sem parâmetros
    public void sayHello() {
        System.out.println(message);
    }
}

Мы можем также определить метод с параметрами или с возвратом . Мы можем установить параметры функции вскоре после его идентификатор скобках просто задать тип и имя параметра . Чтобы вернуть значение из метода, мы должны определить тип, который будет возвращен методом , это происходит до определения имени метода, в предыдущем примере мы используем void , который определяет, что метод не возвращает значения . После определения типа возвращаемого значения, мы можем использовать ключевое слово return вернуть значение . Давайте посмотрим на пример:

// HelloWorld.java
public class HelloWorld {
    public static final String message = "Hello World";
    private int count;

    public String sayHello(String message) {
        return "Hello " + message;
    }
}
Бульбапедия Макконьера

До сих пор, атрибуты класса определены “hard-coded” , т, фиксированных в классе , тех, кто использует его можно только изменить эти значения, если они выполняются | государственные | нет tratativa данных, которые будут изменены .

Мы можем изменить это поведение через строителей . Строителей методы, называемые в момент создания экземпляра объекта они предназначены для загрузки переменных или даже вызвать важные методы для создания экземпляра класса , как это было бы в случае, если класс BancoDeDados, что нужно подключиться к базе на момент создания .

Строитель – обязательно аудитории и не должен иметь тип возвращаемого значения определяется , пример:

// HelloWorld.java
public class HelloWorld {
    public static final String message = "Hello World";
    private int count;

    public HelloWorld(int count) {
        this.count = count;
    }
}

При создании экземпляра:

// Program.java

import HelloWorld;

public class Program {
    public void main(String[] args) {
        HelloWorld hello = new Hello(5); // Parâmetros do construtor vão entre os parênteses.
    }
}

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

This также используется для возврата самого объекта.

Bulbapedia

Воспользовавшись строители, мы можем также назвать перегрузка методов . Перегрузка методов достигается с помощью различных методов одного и того же имени , но с различными параметрами , например, мы, возможно, строитель, HelloWorld, который принимает int count, , и, что не принимаются таким образом, при создании экземпляра мы можем установить count или не , и правильный метод (с или без count () будет вызван . Увидеть:

// HelloWorld.java
public class HelloWorld {
    public static final String message = "Hello World";
    private int count;

    public HelloWorld() {
        count = 0;
    } 

    public HelloWorld(int count) {
        this.count = count;
    }
}
// Program.java
import HelloWorld;

public class Program {
    public void main(String[] args) {
        HelloWorld hello = new HelloWorld(); // Válido
        HelloWorld hello2 = new HelloWorld(4); // Válido
    }
}
Увидеть:

Мы уже указали все основы ООП в Java, и теперь мы можем углубиться в основ объектно-ориентированного программирования. Первый столп, который мы разберем-это Туннель.

В Java, мы можем достичь Туннель с помощью модификатора доступа private что делает атрибут или метод не может быть доступна для других классов, , так как Whirlipede использует его корпуса, чтобы защитить себя!

В приведенном ниже примере мы получим предупреждение, который говорит, что частных переменных, не использовались, но это и ожидалось . Когда мы объявили общую переменную компилятор предполагает, что она будет использоваться, уже в частной переменной компилятор ожидает, что в какой-то метод, наличии ссылки переменная создана.

// HelloWorld.java
public class HelloWorld {
    private String message;
    private int count;
}

Один из способов снять это предупреждение является инициализация переменных через конструктор:

// HelloWorld.java
public class HelloWorld {
    private String message;
    private int count;

    public HelloWorld(String message, int count) {
        this.message = message;
        this.count = count;
    }
}

Мы также можем иметь методы инкапсулированы, частные методы могут быть вызваны только другими методами класса , см:

// HelloWorld.java
public class HelloWorld {
    private String message;
    private int count;

    private void sayHello() {
        System.out.println("Hello")
    }

    public void say() {
        SayHello();
    }
}
// Program.java
import HelloWorld;

public class Program {
    public void main(String[] args) {
        HelloWorld hello = new HelloWorld("World", 2);

        hello.SayHello(); // Erro
        hello.Say(); // "Hello"
    }
}

Это хорошая практика, чтобы сохранить все атрибуты частных, и в случае, если эти требующие внешнего доступа, использовать методы get .

Методы Getter и Setter.

Делиться – значит заботиться, автор: чиби пират

При Инкапсуляции в подобной “проблемы” доступа к данным , это нормально, но мы можем хотеть, чтобы что атрибут является доступным, но не изменяемый , изменяемый но не доступен , или еще изменяется и доступным .

Getter и Setters приходят, чтобы обеспечить эту функциональность. С помощью метода get мы можем управлять в том, что атрибут отображается за пределами вашей области, , метод set мы можем обработать данные, прежде чем ее сохранения , например, путем применения налога на атрибут заработной платы или преобразования одной валюты к другой, прежде чем хранить в переменной баланса банка.

  • По соглашению, методы методы и setters должны быть вызваны getNomeDaVariavel то есть, начиная с get или set, и то переменная, к которой они относятся.

Get нужный возвращает значение типа переменной, связанной , set нужно получить параметр типа переменной, с которой связано .

// HelloWorld.java
public class HelloWorld {
    private String message;
    private int count;

    public String getMessage() {
        return this.message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public int getCount() {
        return this.count;
    }

    public void setCount(int count) {
        this.count = count;
    }
}

Ezeqquiel

Наследование-это одна из форм ПУ уменьшить повторяющийся код . Через наследование, мы можем сделать так, что подкласс наследует все атрибуты и методы суперкласса .

Чтобы использовать наследование, просто включить ключевое слово extends и суперкласса, который мы наследуем. Рассмотрим пример с суперкласса Account и два подкласса, ContaFisica и ContaIndividual :

Суперкласс:

// Conta.java
public class Conta {
    private Integer numero;
    private String dono;
    private Double saldo;
    private Double limiteSaque;

    public Conta() {
    }

    public Conta(Integer numero, String dono, Double saldoInicial, Double limiteSaque) {
        this.numero = numero;
        this.dono = dono;
        this.limiteSaque = limiteSaque;

        this.saldo = saldoInicial;
    }

    // getters e setters
    // ...

    public void deposito(double amount) {
        quantia += amount;
    }

    public void saque(double quantia) {
        quantia -= quantia;
    }
}

Подкласс:

// IndividualAccount.java

public class ContaFisica extends Conta {

}
// ContaJuridica.java
public class ContaJuridica extends Conta {

}

Только слово extends уже гарантирует нам доступ к методам, определенным в Счет . Но у нас есть проблема, несмотря на то, что подкласс может получить доступ методы, атрибуты являются невидимые ей, так как суперкласса, все установили в качестве private . Чтобы подкласс мог получить атрибуты суперкласса, модификатор доступа должен быть protected .

Кроме того, если мы попытаемся вставить новые атрибуты, чтобы создать подкласс, нам придется изменить конструктор , вызовет конструктор суперкласса будет проигнорировано, и, следовательно, переменные суперкласса не будут инициализированы . Чтобы избежать этой проблемы, у нас есть доступ к функции super () через super мы можем вызвать конструктор суперкласса или любой другой метод, передавая параметры .

Для примера, создадим атрибут налог на класс ContaFisica :

// ContaFisica.java
public class ContaFisica extends Conta{
    private double imposto;

    public ContaFisica(Integer numero, String dono, Double saldoInicial, 
            Double limiteSaque, double imposto) {
        // super é chamado passando os parâmetros.
        super(numero, dono, saldoInicial, limiteSaque); 
        this.tax = tax;
    }
}

Как мы можем видеть, код на подклассы был чрезвычайно снижается помощи наследство. Суперкласс хранит атрибуты и методы, общие и подкласс хранит конкретные методы . Стоит отметить, что Java не допускает множественное наследование, то есть, мы не можем расширить в более чем один класс, причиной этого является Проблема Алмаза.

Проблема Алмаза.

Это проблемы связанных непосредственно множественное наследование, , мы можем думать о нем следующим образом:

Если класс Button это подкласс класса Rectangle и Класс Clickable одновременно оба реализуют способ equals какая реализация этого метода подкласс, должен наследовать? A Rectangle у тебя есть де Кликабельно ? Чтобы избежать этого конфликта, Java не позволяет наследства несколькими , но есть некоторые gambiarras которой мы расскажем далее.

Генгар То Же Самое От Девина

Наследство, процитированном ранее, это то, что позволяет работу этого столба. Полиморфизм емкость, что подкласс должен “передать” его суперкласса . К примеру, мы можем сказать, что | все| Squirtle – это Покемон , и, как таковой, может кормить, размножаться, использовать навыки, а также ввести в pokébolas.

Чтобы продемонстрировать это, мы создали 2 классов, а также метод main, чтобы проверить:

// Nossa superclasse
public class Pokemon {
    protected String nome;
    protected Integer forca;

    public Pokemon(String nome, Integer forca) {
            this.nome = nome;
            this.forca = forca;
    }

    public void comer() {
        System.out.println(nome + " está comendo!");
    }
}
// Nossa subclasse
public class Squirtle extends Pokemon {
    public Float multiplicadorAgua = 0.25f;

    public Squirtle(String nome, Integer forca) {
        super(nome, forca);
    }

    @Override
    public void comer() {
        System.out.println("Squirtle come uma berry!");
    }
}

Мы можем наблюдать, что Squirtle-это Покемон , так как “тянется”. Давайте посмотрим Полиморфизм в эксплуатацию сейчас:

public class Program {

    public static void main(String[] args) {
        // Instanciação Normal
        Squirtle squirtleDeOculos = new Squirtle("Squirtle de Óculos", 10);
        squirtleDeOculos.usarWaterCannon();
                // Squirtle de Óculos causou 10 pontos de dano!
        squirtleDeOculos.comer();
                // Squirtle come uma berry!
        System.out.println(squirtleDeOculos.multiplicadorAgua);
                // 0.25

        // Upcast
        Pokemon pokemon = squirtleDeOculos;
        pokemon.comer();
        // Causam erro
        // pokemon.usarWaterCannon();
        // System.out.println(pokemon.multiplicadorAgua);

        //Downcast
        Squirtle mesmoSquirtle = (Squirtle) pokemon;
        mesmoSquirtle.usarWaterCannon();
        mesmoSquirtle.comer();
        System.out.println(mesmoSquirtle.multiplicadorAgua);
    }
}

В начале метода instanciamos новый Squirtle “Squirtle очки”. Squirtle очки использует умение, ест ягоды и имеет свой множитель урона у бассейна.

Но, повторяю, todo Squirtle это покемоны, да? Тогда мы ” Восходящим “, сохраняя суперкласса в переменной, это, потеряли доступ к методам и атрибутам класса Squirtle , но мы поддерживаем все Overrides (перезаписи содержимого методов)… Таким образом, Squirtle может по-прежнему можете съесть ягоды , но не в состоянии использовать свои умения и получить доступ к мультипликатора повреждения воды.

Вперед, выполняем обратный процесс , и глаза более внимательными, могут заметить, что синтаксис отличается, почему? Потому что компилятор может видеть, что Squirtle – это Покемон , потому что знает, что это его суперкласса, но как он будет убедиться, что Покемонов, это Squirtle? Возможно, это будет Алаказам… Чтобы сказать компилятору, что мы знаем, что этот покемон конкретное это Squirtle, у нас есть, что передать подкласс в скобках, , , заставляя преобразования .

Все, кошка-это животное, но не всякое животное-это кошка! Учителя Наук и областей е изд., стер.

Красоты, но почему я хочу потерять данные с Восходящим?

по tc treasures

Существуют ситуации, которые требуют точности agrupar todas как подклассы, определяющие суперкласс . Как Box PC Покемонов, используется для хранения Покемоны . В Java, как мы могли бы использовать List для представления Box? Мы не можем сказать, что List-это тип Squirtle “, так как она только может хранить Squirtles , гораздо меньше, можно сказать, что List-это тип Object, , потому что таким образом Box также может хранить обувь или любую другую вещь! В этом случае, лучше всего воспользоваться общего суперкласса между объектами :

import java.util.ArrayList;
import java.util.List;

public class Program {

    public static void main(String[] args) {
        // Instanciação Normal
        Squirtle squirtle = new Squirtle("Squirtle de Óculos", 10);
        Charmander charmander = new Charmander("Charmander de tutu", 15);

        squirtle.comer();
        // Squirtle come uma berry!
        charmander.cuspirChama();
        // Charmander use Ember!

        List box1 = new ArrayList<>();
        box1.add(squirtle);
        box1.add(charmander);

        ((Squirtle) box1.get(0)).comer();
        // Squirtle come uma berry!
    }
}

Выше мы можем видеть два примера, Алаказам и Squirtle добавляются те же box , это возможно только для помощи к типу “Покемоны” из этого списка, ! Мы все еще можем видеть, что это возможно осуществить Опускаться, чтобы восстановить исходный класс по Восходящим . Также мы можем заметить, что, когда мы используем список, мы используем Полиморфизм!

Также мы можем заметить, что, || когда мы используем список, мы используем Полиморфизм!

Последний столп POO-это абстракция, она состоит из установить контрактов, что класс должен следовать , например подкласс Formaobrigatoriamente должны иметь размер (ширина и высота или радиус) и как рассчитать ее площадь . У нас есть два способа установить Форму договора, и пройдем через каждый из них. Абстракции помогает скрыть и отдельные детали, и показать только то, что необходимо.

Абстрактные классы.

Абстрактный класс состоит в класс с модификатором abstract , абстрактный класс может иметь так много методов, твердых и абстрактные, как они необходимы но, если есть один абстрактный метод, то есть, в класс также должны быть абстрактной.

Абстрактный метод состоит в подпись метода, , то есть, их модификаторы + ваш тип возвращаемого + идентификатор + параметры , тело функции (ключи и его содержание).

В случае, если класс Образом, мы могли бы сделать ее абстрактной, см:

// Forma.java
public abstract class Forma{
    public abstract double area();
}

Чтобы использовать этот класс абстрактный, просто принимайте:

// Retangulo.java
public class Retangulo extends Forma {

    private Double largura;
    private Double altura;

    public Retangulo(Double largura, Double altura) {
        this.largura = largura;
        this.altura = altura;
    }

    @Override
    public double area() {
        return altura * largura;
    }

}

Также мы можем иметь класс Круг :

public class Circulo extends Forma{

    private Double raio;
    public Circulo(Double raio) {
        this.raio = raio;
    }

    @Override
    public double area() {
        return 3.1415 * Math.pow(raio, 2);
    }

}

Мы можем видеть, что /все классы, которые наследуют Shape обязаны реализовать абстрактный метод его способ . Стоит помнить, что абстрактные классы не могут быть созданы , его цель-служить в качестве суперкласса.

Почему использовать абстрактный класс?

Мы можем в какой-то момент требуется классы придерживаться некоторых стандартных , но имеют некоторые собственные методы . В нашем примере, мы хотим, чтобы любой класс, который расширяет Образом есть возможность рассчитать свой регион, но мы не знаем, какие будут способы их измерения , поэтому передаем ее обязанность реализовать это . Класс Круг, который расширяет Форму, это дано ответственность сказать, как вычислить его площадь, в этом случае, используя его атрибут-молния, Так же, как класс Квадрат, который расширяет форме, должен сказать, его площадь в соответствии с размером вашей стороне.

Интерфейс.

По Суеверным

Интерфейсы как абстрактные классы , но они позволяют осуществления несколько, то есть, мы можем реализовывать несколько интерфейсов (Tice которой мы упоминаем о проблеме diamond 😅 ).

В отличие от абстрактных классов, интерфейсы имеют только методы без тела . Интерфейс не можете установить переменные, , если не окончания .

Давайте рассмотрим, например, Интерфейс для Платежей в Интернете, давайте посмотрим:

// ServicoInvestimentoOnline.java
public interface ServicoInvestimentoOnline{
    public double taxa(double quantia);
    public double lucro(double quantia, int meses);
}

Теперь рассмотрим пример реализации:

// ServicoInvestimento.java
public class ServicoInvestimento implements ServicoInvestimentoOnline{

    private static final double PORCENTAGEM_TAXA= 0.02;
    private static final double LUCRO_MENSAL = 0.01;

    @Override
    public double taxa(double quantia) {
        return quantia*PORCENTAGEM_TAXA;
    }

    @Override
    public double lucro(double quantia, int meses) {
        return quantia * LUCRO_MENSAL * meses;
    }

}

Podemos ser como que, нао утилизамос палавра-имеет расширяет e sim реализует . Стоит также отметить, что все методы интерфейса должны быть реализованы .

При использовании интерфейсы мы можем реализовать несколько из них в подкласс , просто разделить на , . Также можно расширить класс, просто для поддержания порядка extends и после implements .

public class Circle extends Shape implements Colored, Drawable {
    // ...
}

Так скажи мне, ПОЧЕМУ????

Ахо, скажи мне, конфунди, Тебя обвели вокруг пальца, когда ты был на задворках.

– Это не боль в рог, интерфейсы облегчают чтение кода могут быть используемые в качестве описания методов . Но не следует воспринимать это, библиотеки сторонних производителей может иметь метод, который принимает объект сын определенный интерфейс , и через полиморфизм мы знаем, что любой класс, который будет получен в методе, будет иметь все методы интерфейса .

Это статья, которая должна быть написана больше или меньше в день 16/11/2020, на неделе, когда я пришел в качестве Java-разработчика, в период тренировок. Foi me dando um prazo de 2 семана пара доминар КАКАШКА(mas eu trapaceei e comecei a estudar 2 семана, разберись с этим). Felizmente, consegui um resultado satisfatório, 1 семана и пасса, мергулхар, не мундо, младший, Весна. Еще день, 27 Ноября, я слышал это мой Менеджер, что было намерение меня уже, а 05 Января, я был приведен в действие в качестве Разработчика Мастера, теперь после 45 дней, как эффективные, я взял смелость закончить эту статью.

Спасибо за участие в команде дружелюбного, который не жалеет усилий выразить удовлетворение в связи с моей работой. Ежедневно узнаю из тысячи вещей, новых, а не только в моменты кода и поиска, но и в разговорах с коллегами по команде. Без сомнения, это было бы невозможно без усилий, что я сделал до сих пор, были 8 лет, изучая более 7 различных Языках программирования, множество инструментов и 2 лет, вручая сертификаты. Цель этого Поста-это сэкономит вам какое-то время, что я потерял без понимания объектно-Ориентированного Программирования, без сомнения, каким-то, эта парадигма помогла мне лучше понять Шаблоны Проектирования, и улучшить качество моего кода.

Как пример того, что мы никогда не знаем всего, в первой версии этой статьи, я сказал, что Полиморфизм был аналог Метода Перегрузки, я узнаю истину в ходе обучения, стажировки и с тех пор я прихожу procrastinando, чтобы закончить это здесь.

Я надеюсь, что вам понравилось, попробую капать не хватает времени и принести еще некоторые материалы, которые я считаю важными, как для тех, кто только начинает, и для тех, кто уже находится в зоне.

Понравилось, что увидел? Рассмотрим кофе:) https://ko-fi.com/immurderer

Оригинал: “https://dev.to/immurderer/pokemons-ensinam-poo-2fpl”