Object类是所有类的直接或间接父类
主要的Object类方法包括:
super关键字用于指代父类
构造方法的调用会沿着继承的关系找到所有的父类构造方法
类型 | 无修饰符 | public | private | protected |
---|---|---|---|---|
同一类 | 是 | 是 | 是 | 是 |
同一包中的子类 | 是 | 是 | 否 | 是 |
同一包中的非子类 | 是 | 是 | 否 | 是 |
不同包中的子类 | 否 | 是 | 否 | 是 |
不同包中的非子类 | 否 | 是 | 否 | 否 |
o.x | Y | Y |
---|---|---|
o.y | Y | N |
o.z | N | N |
o.m1 | Y | Y |
o.m2 | Y | N |
o.m3 | N | N |
C1 | Y | N |
---|---|---|
C2 | Y | Y |
public class Foo{
private boolean c;
public static void main(String[] args){
Foo foo=new Foo();
System.out.println(foo.x);
System.out.println(foo.convert());
}
private int convert(){
return x?1:-1;
}
}
public class Test{
public static void main(String[] args){
Foo foo=new Foo();
System.out.println(foo.x);
System.out.println(foo.convert());
}
}
重写
public class Test{
public static void main(String[] args){
A a=new A();
a.p(10);
a.p(10.0);
}
}
class B{
public void p(double i){
System.out.println(i*2);
}
}
class A extends B{
public void p(double i){
System.out.println(i);
}
}
重载
public class Test{
public static void main(String[] args){
A a=new A();
a.p(10);
a.p(10.0);
}
}
class B{
public void p(double i){
System.out.println(i*2);
}
}
class A extends B{
public void p(int i){
System.out.println(i);
}
}
在将父类对象作为参数的方法中,可将子类对象作为参数进行传递 PolymorphismDemo.java
隐式转换,Student类的实例对象自动成为Object类的实例对象
Object o=new Student();
Student s=o;
$\times$
Object o=new Student();
Student s=(Student)o;
$\checkmark$
显式转换,将父类对象实例转换为子类对象实例时,必须使用显式转换
instanceof运算符,用于检测某个对象是否是一个类的实例
Object myObject=new Circle();
//...
if(myObject instanceof Circle){
System.out.println("The circle diameter is "+
((Circle)myObject).getDiameter());
}
object1.equals(object2);
public boolean equals(Object obj){
return this==obj;
}
public final class FC{
//......
}
final static double PI=3.14159265;
public class Test{
public final void m(){
//......
}
}