gb-java-devel/jc3-03.tex

165 lines
5.5 KiB
TeX
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

\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}