ダークホースプログラマー--オブジェクト向けにsuperとfinalキーワードを継承
4055 ワード
------ Javaトレーニング、Androidトレーニング、iOSトレーニング、.Netトレーニング、あなたと交流することを期待します!------一、継承:1.キーワードの使用:extends;2.継承の利点:1).コードの多重性を向上させる;2).コードのメンテナンス性を向上させる; 弊害:子類と親類に依存性が生じた.3.継承の特徴: 1).Javaでは継承のみ: class A{} class B{} class C extends A,B{}//エラーです. 2).ただしJavaはマルチレベル継承をサポートする: class A{ fun1(){} } class B extends A{ fun2(){} } class C extends B{}//Cはfun 1とfun 24を継承する注意事項を持つ: 1).親クラスのprivate(プライベート)メンバーを継承できません. 2).親の構造方法を継承できない. 3).一部の機能のために継承しないでください; 4).継承はいつ使用されますか?「is a」の関係があります.5.継承中のメンバー変数とメンバーメソッドの関係: 1).サブクラスは、親と同じ「メンバー変数」を定義できます.この場合、サブクラスのメンバー変数は親のメンバー変数を上書きします.superで表示される親にアクセスするメンバー変数を使用します. 2).子クラスは親クラスと同じ「メンバーメソッド」を定義できます.戻り値のタイプ、メソッド名、パラメータリストは完全に同じです.この形式は「書き換え」と呼ばれます. 1.戻り値のタイプ、メソッド名が同じで、パラメータのリストが異なる:再ロードと同様にコンパイルできます. 2.戻り値のタイプは異なりますが、メソッド名とパラメータのリストは同じです.コンパイルエラーです.戻り値のタイプは同じでなければなりません.6.thisとsuperの違い:1).this: 1.どのクラスでも使用できます. 2.現在のオブジェクトの参照を格納します.JVMによって自動的に割り当てられます.このようなオブジェクトをインスタンス化する場合. 3.このオブジェクトのメンバー変数、メンバーメソッド、構築メソッドにアクセスできます. 4.this()は、このクラスの他の構築方法を呼び出すことができますが、必ずこの構築方法の最初の行の有効コードに書きます.2).super: 1.一般的にサブクラスで使用される. 2.親オブジェクトの参照が格納されます.JVMが自動的に割り当てられます.子オブジェクトをインスタンス化する場合. 3.親オブジェクトのメンバー変数、メンバーメソッド、構築メソッドにアクセスできます. 4.super()は親の構造方法を呼び出すことができ、この構造方法の最初の文でもある. 注意:this()と同時に存在することはできません.親にデフォルトのパラメータのない構造方法がない場合、子クラスの構造方法はすべて表示されます.super()は親クラスのパラメータ付き構造方法を呼び出します.二、finalキーワード:1.クラス:最終クラスを表し、継承できません.2.メンバー変数:最終値を持つ--定数です.値は1回のみ割り当てられ、その後は変更できません. ≪基本データ型|Basic Data Type|oraolap≫:「≪値|Value|oraolap≫」が変更できないことを示します. 参照データ型:「参照(アドレス)」は変更できません.3.メンバーメソッド:最終メソッドを表し、書き換えられません.
継承とfinal例
final:
継承とfinal例
class Person
{ //
private String name;
private int age;
private char sex;
//
Person(){
}
Person(String name,int age,char sex){
this.name = name;
this.age = age;
this.sex = sex;
}
// get set
void setName(String name){
this.name = name;
}
String getName(){
return this.name;
}
void setAge(int age){
this.age = age;
}
int getAge(){
return this.age;
}
void setSex(char sex){
this.sex = sex;
}
char getSex(){
return this.sex;
}
//
void eat(){
System.out.println(" ");
}
void sleep(){
System.out.println(" ");
}
}
class Student extends Person
{
//
private String stuNo;
//
Student(){
}
Student(String name,int age,char sex,String stuNo){
super(name,age,sex);//
this.stuNo = stuNo;
}
// get set
void setStuNo(String stuNo){
this.stuNo = stuNo;
}
String getStuNo(){
return this.stuNo;
}
// ;
void study(){
System.out.println(" Java");
}
}
class Teacher extends Person
{
//
private String teaNo;
//
Teacher(){
}
Teacher(String name,int age,char sex,String teaNo){
super(name,age,sex);
this.teaNo = teaNo; //
}
// get set
void setTeaNo(String teaNo){
this.teaNo = teaNo;
}
String getTeaNo(){
return this.teaNo;
}
//
void teach(){
System.out.println(" Java");
}
}
class Demo
{
public static void main(String[] args)
{
Teacher t1 = new Teacher();
t1.setName(" "); //
t1.setAge(20); //
t1.setSex(' '); //
t1.setTeaNo("it_tea_001"); //
t1.eat(); //
t1.sleep(); //
t1.teach(); //
}
}
final:
class Book
{
String name;
String publish;
}
class Demo
{
public static void main(String[] args)
{
// change(10);
Book book = new Book();
book.name = "JavaSE ";
book.publish = "itcast";
change(book);
}
public static void change(final int num){//num
System.out.println("num = " + num);//10
// num = 20;
// System.out.println("num = " + num);
}
public static void change(final Book book){ //book ;
System.out.println(book.name);
book.name = "JavaEE ";
// book = new Book();// 。
System.out.println(book.name);
}
}