继承的概念
继承是面向对象编程最重要的特征之一。它允许对一个已近存在的类进行拓展,从而编写一个新的类。新类继承了父类所有的属性和行为。
“is a”关系是一个简单但是重要的用于判断一个继承是否设计良好的步骤。如果两个类存在继承关系,那么我们必须能说一个子对象“is a ”父对象。
关键字 extends 用于实现继承。Java中的类只能继承一个类。
继承是内存叠加的机制。
父类的构造方法不会被子类继承。
在产生子类对象的时候,先调用父类的再调用子类的。
当我们new 一个子类对象时候,首先调用父类构造方法,产生一个父类对象部分,然后再调用子类的构造方法,叠加上子类特有部分,从而构成一个完整的子类对象。
方法重写
父类
public class Father {
public void dance(){
System.out.println("我们喜欢迪斯科!");
}
}
子类
public class Son extends Father{
//1、方法名、参数列表、返回类型必须与父类方法一致
//2、方法的访问修饰符子类不能比父类小
//3、方法抛出的异常,子类不能比父类多
@Override
public void dance(){
System.out.println("我们喜欢BigBang");
}
}
对toString的重写
//toString()--返回一个对象的字符串描述
//当直接对一个对象进行字符串操作时,会自动调用该方法
Student stu = new Student("zhang3",18);
Student stu1 = new Student("li4",22);
System.out.println(stu1);
String str = "描述" + stu;
System.out.println(str);
System.out.println(stu.toString());
System.out.println("这是一个Student对象,name属性的值是:" + stu.getName() + ";age属性的值是:" + stu.getAge());
2.equals()和双等号(==)的区别
//equals()---比较两个对象在业务上是否相等,往往需要根据具体业务进行重写
Student stu0 = new Student("zhang3",18);
Student stu1 = new Student("zhang3",18);
//双等号比较对象,比较的是这两个引用是否指向同一个对象!而不是两个对象业务上是否可以认为是相等的
System.out.println(stu0 == stu1);
System.out.println(stu0.equals(stu1));
重写和重载的区别:
重写:在继承中,子类包含父类相同的方法,只是实现部分不同。
重载:在同一个类中,有多个同名方法,并且参数列表不同
引用数据类型的强制转换条件:必须有继承关系(上下关系)