Javaオブジェクトのクラス
Objectクラスは、JavaのすべてのクラスはObjectクラス外から継承し、ジェネリッククラスです。したがって、プロセスは、オブジェクトを作成するように理解することができます
public class Cars extends Object{ // 继承Object }
Objectクラスは抽象クラスではありません、この方法は、部分的にカバーすることができます。
Objectクラスは、多くの便利なメソッドを持っています
- 等号()2つのクラスが同じである比較
- getClass()オブジェクトが初期化されているかを示します
- hashCode()このオブジェクトのハッシュコードを示しています
- 名前のtoString()クラスをリストし、我々はデジタルを気にしないでください
- Objectクラスアクション
- マルチステートの方法は、機構の様々なタイプに対応できるように
- 任意のオブジェクトは、必要に応じたメソッドのためのプログラム・コードで提供されるJava実装期間(すべてのクラスを継承することができるため)
Objectクラスの説明多型
// 以下代码是合法的
ArrayList<Car> myCars = new ArrayList<Car>(); // 保存Car的ArrayList
Car BMW = new Car(); // 新建一个Car
myCars.add(BMW); // 装进ArrayList
Car M3 = myCars.get(0) // 将Car赋值给新的Car引用变量
// 于是学了Object后会设想,能不能填入Object使其可以保存任意一种ArrayList呢?
// 于是考虑能否这么写代码?
ArrayList<Object> myCars = new ArrayList<Object>();
Car BMW = new Car();
myCars.add(BMW);
// 目前的代码没有问题,但是再做以下操作便会发生问题
Car M3 = myCars.get(0);
// 编译器会报错,为什么呢?
// 放进去的是宝马,但是从ArrayList<Object>取出来的对象都会被当成是Object这个类的实例
このように、我々はそれが明らかになった次のコードを参照してください
// 这一段代码是不合法的
public void go(){
Dog aDog = new Dog();
Dog sameDoge = get Object(aDog);
}
public Object getObject(Object o){
return o; // 返回的是同一个引用,但是类型已经转换为Object了
}
簡単には、コンパイラを呼び出すことのできる方法を決定するために参照型に基づいていることを確認します。詳細には、オブジェクトに関係なく、オブジェクトのインスタンスになり、各タイプを表す実際のオブジェクトの、すべてダウンして親クラスから継承します。だから、独自のタイプに加えて、またに対処するために、オブジェクトとして使用することができます。しかし、どのような引用されていることは、あなただけ呼び出すことができるものです!新しいサブクラスのメソッドは、サブクラスの呼び出しへの参照を書き込むことができます!
次のコードは、非常に明白
public class Dog{ void yell(){ // code } } Dog a = new Dog(); Object o = a; o.equals(a); >>> True // 二者的对象类型和地址都是相同的,因为这是赋值而不是在内存上开创空间 o.yell(); >>> Wrong // 这样会报错,因为引用的是Object类,里面没有yell()