共计 2646 个字符,预计需要花费 7 分钟才能阅读完成。
导读 | 大家好,这篇文章我们主要向大家介绍 Java 基础中的 Object 类、匿名内部类、构造方法的继承知识,一起来学习下吧! |
Object 类是所有类的父类,所有类都继承 Object 类。
toString() 方法:这个方法用的比较多,它是返回该对象的字符串,一般子类会覆盖;
getClass() 方法:返回 Object 运行的类型;
equals() 方法:判断对象的内容是否相等;
finalize() 方法:这个方法主要用来释放资源。这个方法用的少,无法确定什么时候调用。
hashCode() 方法:返回这个对象的哈希值;
notify() 方法:这个方法是唤醒在这个对象上等待的某个线程;
notifyAll() 方法:这个方法是唤醒在这个对象上等待的所有线程;
wait() 方法:当前线程等待这个对象的锁,它是具有这个对象的锁。wait() 方法表示一直等待,一直到得到锁或被中断。wait(long timeout) 设定一个超时间隔,如果在规定时间内没有获得锁就返回。
clone() 方法:保护方法,实现对象的浅复制。当实现了 Cloneable 接口才能够调用这个方法,不然会抛出异常。
例如:
// 定义水果类
class Fruit{
double weight=10;// 定义 weight 属性为重量
// 定义 info() 方法
void info(){System.out.println("我是一个水果,重量为:"+weight+"g!");
}
}
public class p32 {public static void main(String[] args) {
// TODO Auto-generated method stub
Fruit f=new Fruit();// 创建 Fruit 类对象
System.out.println(f.toString());// 调用 toString 方法
}
}
运行的结果是:
从上面代码中,在输出的语句中是调用了 Fruit 对象的 toString() 方法。这个 Fruit 类是继承 Object 类,在 Object 定义了 toString() 方法,输出这个对象的信息。
// 定义水果类
class Fruit{
double weight=10;// 定义 weight 属性为重量
// 重写 Object 类的 toString() 方法
public String toString(){return "我是一个水果,重量为:"+weight+"g!";}
}
public class p32 {public static void main(String[] args) {
// TODO Auto-generated method stub
Fruit f=new Fruit();// 创建 Fruit 类对象
System.out.println(f.toString());// 调用 toString 方法
}
}
运行的结果是:
从上面代码中,在定义的水果类中重写 Object 类的 toString() 方法,Fruit 类是继承 Object 类,输出该对象的信息。
匿名内部类简单来说就是不知道这个类的名字。创建匿名内部类,只要调用一次就可以了。
new 类名 (参数) | 父接口 () {// 匿名内部类的类体部分}
// 定义水果类接口
interface Fruit{
double weight=30;// 定义 weight 属性为重量
void info();// 定义抽象方法}
public class p33 {public static void main(String[] args) {
// TODO Auto-generated method stub
// 定义匿名内部类作为参数传给 fruitInfo() 方法
fruitInfo(new Fruit(){
// 实现 info()方法
public void info(){System.out.println("我是一个水果,重量为"+weight+"g!");
}
});
}
// 定义静态方法 fruitInfo()
public static void fruitInfo(Fruit f){f.info();// 调用对象 f 的 info() 方法}
}
运行的结果是:
从上面代码中,首先是定义了水果类接口,定义了 weight 属性和 info() 抽象方法。在调用 fruitInfo 方法,把方法的参数写在 new Fruit(){} 相当于实例化对象,把对象传给 fruitInfo 方法。在大括号里面是子类匿名。
① 子类是可以无条件地继承父类的无参数的构造方法;
② 如果子类自己没有构造方法,将继承父类的无参数构造方法成为自己的构造方法; 如果子类自己定义了构造方法,当在创建新对象时,它将先执行继承父类的无参数构造方法,然后再执行自己的构造方法。
③ 对于父类的含参数的构造方法,子类在自己构造方法中用“super”关键字来调用它,在这个调用语句需要是子类构造方法的第一个可执行语句。
// 定义父类
class Father{public Father(){System.out.println("父类...");
}
public Father(String name){System.out.println("父类名字为:" + name);
}
}
// 定义子类继承父类
class Son extends Father{public Son(){super("Tom");
System.out.println("子类...");
}
}
public class p39 {public static void main(String[] args) {
// TODO Auto-generated method stub
Son son = new Son();// 创建 Son 的实例对象}
}
运行的结果是:
本文主要介绍了 Object 类、匿名内部类、构造方法的继承。
Object 类是所有类的父类,所有类都继承 Object 类。介绍了 Object 类的一些方法,通过 Object 类例子和重写 Object 类 toString() 方法例子帮助理解用法。
匿名内部类简单来说就是不知道这个类的名字。创建匿名内部类,只要调用一次就可以了。
构造方法的继承介绍了它的特点,通过他的例子来了解这个构造方法的继承。