165 lines
5.5 KiB
TeX
165 lines
5.5 KiB
TeX
\documentclass[j-spec.tex]{subfiles}
|
||
|
||
\begin{document}
|
||
%\setcounter{tocdepth}{3}
|
||
\tableofcontents
|
||
\section{Специализация: данные и функции}
|
||
\subsection{В предыдущем разделе}
|
||
Будет рассмотрен базовый функционал языка, то есть основная встроенная функциональность, такая как математические операторы, условия, циклы, бинарные операторы. Далее способы хранения и представления данных в Java, и в конце способы манипуляции данными, то есть функции (в терминах языка называющиеся методами).
|
||
|
||
\subsection{В этом разделе}
|
||
Разберём такие основополагающих в Java вещи, как классы и объекты, а также с тем, как применять на практике основные принципы ООП: наследование, полиморфизм и инкапсуляцию. Дополнительно рассмотрим устройство памяти в джава.
|
||
\begin{itemize}
|
||
\item \nom{класс}{- }
|
||
\item \nom{объект}{- }
|
||
\item \nom{статика}{- }
|
||
\item \nom{стек}{- }
|
||
\item \nom{куча}{- }
|
||
\item \nom{сборщик мусора}{- }
|
||
\item \nom{конструктор}{- }
|
||
\item \nom{вложенный класс}{- }
|
||
\item \nom{внутренний класс}{- }
|
||
\item \nom{инкапсуляция}{- }
|
||
\item \nom{наследование}{- }
|
||
\item \nom{полиморфизм }{- }
|
||
\end{itemize}
|
||
|
||
|
||
\begin{lstlisting}[language=Java,style=JCodeStyle]
|
||
package ru.gb.jcore;
|
||
|
||
public class Cat {
|
||
String name;
|
||
String color;
|
||
int age;
|
||
}
|
||
\end{lstlisting}
|
||
|
||
\begin{lstlisting}[language=Java,style=JCodeStyle]
|
||
Сat cat0;
|
||
cat0 = new Cat();
|
||
Cat cat1 = new Cat();
|
||
\end{lstlisting}
|
||
|
||
|
||
\begin{lstlisting}[language=Java,style=JCodeStyle]
|
||
package ru.gb.jcore;
|
||
|
||
public class Main{
|
||
public static void main(String[] args) {
|
||
Cat cat1 = new Cat();
|
||
Cat cat2 = new Cat();
|
||
|
||
cat1.name = "Barsik";
|
||
cat1.color = "White";
|
||
cat1.age = 4;
|
||
|
||
cat2.name = "Murzik";
|
||
cat2.color = "Black";
|
||
cat2.age = 6;
|
||
|
||
System.out.println("Cat1 named: " + cat1.name + " is " + cat1.color + " has age: " + cat1.age);
|
||
System.out.println("Cat2 named: " + cat2.name + " is " + cat2.color + " has age: " + cat2.age);
|
||
}
|
||
}
|
||
\end{lstlisting}
|
||
|
||
\begin{verbatim}
|
||
Cat1 named: Barsik is White has age: 4
|
||
Cat2 named: Murzik is Black has age: 6
|
||
\end{verbatim}
|
||
|
||
\begin{lstlisting}[language=Java,style=JCodeStyle]
|
||
Cat cat1 = new Cat();
|
||
Cat cat2 = cat1;
|
||
|
||
cat1.name = "Barsik";
|
||
cat1.color = "White";
|
||
cat1.age = 4;
|
||
|
||
cat2.name = "Murzik";
|
||
cat2.color = "Black";
|
||
cat2.age = 6;
|
||
|
||
System.out.println("Cat1 named: " + cat1.name + " is " + cat1.color + " has age: " + cat1.age);
|
||
System.out.println("Cat2 named: " + cat2.name + " is " + cat2.color + " has age: " + cat2.age);
|
||
\end{lstlisting}
|
||
\begin{verbatim}
|
||
Cat1 named: Murzik is Black has age: 6
|
||
Cat2 named: Murzik is Black has age: 6
|
||
\end{verbatim}
|
||
|
||
\begin{lstlisting}[language=Java,style=JCodeStyle]
|
||
public class Cat {
|
||
String name;
|
||
String color;
|
||
int age;
|
||
|
||
void voice() {
|
||
System.out.println(name + " meows");
|
||
}
|
||
|
||
void jump() {
|
||
if (this.age < 5) System.out.println(name + " jumps");
|
||
}
|
||
}
|
||
\end{lstlisting}
|
||
|
||
- Также, хотелось бы отметить, что мы можем использовать -Xms и -Xmx опции JVM, чтобы определить начальный и максимальный размер памяти в куче. Для стека определить размер памяти можно с помощью опции -Xss;
|
||
|
||
\begin{lstlisting}[language=Java,style=JCodeStyle]
|
||
public class Cat {
|
||
private String name;
|
||
private String color;
|
||
private int age;
|
||
|
||
public Cat() {
|
||
System.out.println("constructor is constructing...");
|
||
name = "Barsik";
|
||
color = "White";
|
||
age = 2;
|
||
}
|
||
}
|
||
\end{lstlisting}
|
||
|
||
\begin{lstlisting}[language=Java,style=JCodeStyle]
|
||
public class Cat {
|
||
private String name;
|
||
private String color;
|
||
private int age;
|
||
|
||
Cat(String n, String c, int a) {
|
||
System.out.println("constructor is constructing...");
|
||
name = n;
|
||
color = c;
|
||
age = a;
|
||
}
|
||
}
|
||
\end{lstlisting}
|
||
|
||
\begin{lstlisting}[language=Java,style=JCodeStyle]
|
||
Cat cat1 = new Cat("Barsik", "White", 4);
|
||
Cat cat2 = new Cat("Murzik", "Black", 6);
|
||
\end{lstlisting}
|
||
|
||
\begin{lstlisting}[language=C,style=CCodeStyle]
|
||
public class Cat {
|
||
private String name;
|
||
private String color;
|
||
private int age;
|
||
|
||
public Cat(String name, String color, int age) {
|
||
this.name = name;
|
||
this.color = color;
|
||
this.age = age;
|
||
}
|
||
}
|
||
\end{lstlisting}
|
||
|
||
ключевое слово this в Java используется только в составе экземпляра класса. Но неявно ключевое слово this передается во все методы, кроме статических (поэтому this часто называют неявным параметром) и может быть использовано для обращения к объекту, вызвавшему метод.
|
||
|
||
|
||
\printnomenclature[40mm]
|
||
|
||
\end{document}
|