Java继承
类的继承格式:
class 父类 {
}
class 子类 extends 父类 {
}
java 不支持多继承,但支持多重继承。
继承关键字:
extends 只能继承一个类;
implements 可以同时继承多个接口(接口跟接口之间采用逗号分隔);
super 引用当前对象的父类;
this 指向自己的引用;
final 最终类,该类不能继承的,或用于修饰方法,该方法不能被子类重写;
继承中的构造方法:
1.子类的构造的过程中必须调用其基类的构造方法。
2.子类可以在自己的构造方法中使用super(argument_list)调用基类的构造方法。
(1)使用this(argument_list)调用本类的另外的构造方法。
(2)如果调用super,必须写fang在子类构造方法的第一行。
3.如果子类构造方法中没有显式地调用基类构造方法,则系统默认调用基类无参数的构造方法。
4.如果子类构造方法中既没有显式调用基类构造方法,而基类中又没有无参的构造方法,则编译出错。
toString方法
1.Object类中定义有public String toString()方法,其返回值是String类型,描述当前对象的有关信息;
2.在进行String与其他类型数据的连接操作时(如:System.out.println(“info”+person)),将自动调用该对象的toString()方法;
3.可以根据需要在用户自定义类型中重写toString()方法.
例:
public class TestToString{
public static void main (String[] agrs){
Man man = new Man();
System.out.println("man = "+man);
}
}
class Man{
//输出的是@ + "hashcode"
}
输出为:
man = jicheng.Man@7852e922
例
public class TestToString{
public static void main (String[] agrs){
Man man = new Man();
System.out.println("man = "+man);
}
}
class Man{
public String toString(){
return "the man is a superman";
}
}
输出为
man = the man is a superman
equals方法
Object类中定义有:
1.public boolean equals(Object obj)方法
提供定义对象是否“相等”的逻辑。
2.Object的equals方法定义为:x.equals(y)当x和y是同一个对象的应用时返回ture否则返回false.
3.J2SDK提供的一些类,如String,Date等,重写了Object的equals方法,用这些类的equals方法,x.equals(y),当x和y所引用的对象是同一个类对象且属性内用相等时(并不一定是相同对象),返回ture否则返回false.
4.可以根据需要在用户自定义类型中重写equals方法。
例
public class TestEquals {
public static void main(String[] args) {
Person p1 = new Person(1,2);
Person p2 = new Person(1,2);
System.out.println(p1 == p2);
System.out.println(p1.equals(p2));
}
}
class Person{
int id;
int age;
public Person(int id,int age) {
this.id = id;
this.age = age;
}
public boolean equals(Object obj) {
if(obj == null) {
return false;
}else {
if(obj instanceof Person) {
Person p = (Person)obj;
if(p.id == this.id && p.age == this.age) {
return true;
}
}
}
return false;
}
}
输出结果为:
false
true