MathJaxと書くと重いので、Githubにpdfを置きました。
https://github.com/erdes/math/blob/master/integral1.pdf
Java/クラス継承
新しい会社でJavaを新たに学ぶことになり、JavaSilverを勉強中。
勉強の記録したことを、自分の記録としても残しておこうと思う。
可能な限りシンプルな例で、言語の仕様などを理解できるように書いていこうと思う。
開発する環境はいろいろあるとは思うが(実際自分のパソコンにもSTSが入っているが)、愚直にコマンドラインからコンパイルを行っていく。
(まずはEngineerをつくるので、Policeなどはまだつくらないかもしれないが)
まず、Jobsクラスをつくる。
コマンドでカレントディレクトリ(この二つのファイルが置いてあるディレクトリ)に移動したら、以下のようにコマンドを打つ。
今回の場合、何かを行うわけではないので(コンソールに表示したりとか)、「無事コンパイルできました」というところで話は一区切りとなる。
Jobsクラスは以下のようにする。(フィールドは何も宣言しない。)
そうすると、以下のようなエラーが吐かれる。
本当に初歩の初歩のミスだが、extendsのところをsを抜かしてextendにしてしまってコンパイルできなかったことがあった。
勉強の記録したことを、自分の記録としても残しておこうと思う。
可能な限りシンプルな例で、言語の仕様などを理解できるように書いていこうと思う。
前提
JVMはインストールされている前提とする。開発する環境はいろいろあるとは思うが(実際自分のパソコンにもSTSが入っているが)、愚直にコマンドラインからコンパイルを行っていく。
クラスの継承
Jobsというクラスを継承して、EngineerやPolice、Firefighter、Doctorといった子クラスを作っていくことを考える。(まずはEngineerをつくるので、Policeなどはまだつくらないかもしれないが)
まず、Jobsクラスをつくる。
//Jobs.javaというファイル名にする。
//クラス名とファイル名は同じにしなければいけない。
public class Jobs{
int salary;
}
同様に、Engineerクラスを作る。
//Engineer.javaというファイル名にする。
//クラス名とファイル名は同じにしなければいけない。
public class Engineer extends Jobs{
Engineer(){
salary = 50;
}
}
この二つのファイルを作成し、同じディレクトリに置いておく。
コマンドでカレントディレクトリ(この二つのファイルが置いてあるディレクトリ)に移動したら、以下のようにコマンドを打つ。
$javac Engineer.javaそうすると、同じディレクトリに、Jobs.classというファイルと、Engineer.classというファイルが作成される。
今回の場合、何かを行うわけではないので(コンソールに表示したりとか)、「無事コンパイルできました」というところで話は一区切りとなる。
$javac Jobs.java Engineer.javaとしてもよいが、Engineer.javaだけでも同じこと。
コンパイルが失敗する例
コンパイルできない例も書いておく。Jobsクラスは以下のようにする。(フィールドは何も宣言しない。)
//Jobs.javaというファイル名にする。
//クラス名とファイル名は同じにしなければいけない。
public class Jobs{
}
Engineerクラスは同じ。(だけどもう一度書いておく。)
//Engineer.javaというファイル名にする。
//クラス名とファイル名は同じにしなければいけない。
public class Engineer extends Jobs{
Engineer(){
salary = 50;
}
}
これで、同じく
$javac Engineer.javaと打つ。
そうすると、以下のようなエラーが吐かれる。
Engineer.java:5: エラー: シンボルを見つけられません
salary = 50;
^
シンボル: 変数 salary
場所: クラス Engineer
エラー1個
salaryという変数は親クラスでも子クラスでも宣言されていないからだ。
余談
本題とは少し関係ないが、やらかした凡ミスも書いておく。本当に初歩の初歩のミスだが、extendsのところをsを抜かしてextendにしてしまってコンパイルできなかったことがあった。
//Engineer.javaというファイル名にする。
//クラス名とファイル名は同じにしなければいけない。
public class Engineer extend Jobs{
Engineer(){
salary = 50;
}
}
これでコンパイルをしようとすると以下のようなエラーが出される。
Engineer.java:1: エラー: '{'がありません
public class Engineer extend Jobs{
^
エラー1個