1、什么是继承
继承就是子类继承父类的特征(属性)和行为(方法),子类从父类继承属性和方法,使得子类具有父类相同的特征(属性)和行为(方法)
动物类:
属性:名字、年龄、颜色
方法:显示信息
狗类 继承 动物类
属性:父类:动物类(名字、年龄、颜色)
狗类:品种(独有属性)
方法:显示信息
猫类 继承 动物类
属性:父类:动物类(名字、年龄、颜色)
猫类:性别(独有属性)
方法:显示信息
例:
Animal类
public class Animal {
String name;//姓名
int age;//年龄
String color;//颜色
public void print() {
}
}
Dog类继承Animal类
public class Dog extends Animal{
String Varieties;//品种
}
Test类
public class AnimalTest {
public static void main(String[] args) {
Dog dog = new Dog();
dog.age = 21;
dog.color = "黑色";
dog.name = "小黑";
dog.Varieties = "哈士奇";
}
}
2、优点
减少代码的冗余性
3、当一个类没有指定继承具体哪个父类时,则默认继承object类
object类是所有类的父类(超类)
4、注意事项
1.子类继承父类,但是不能继承父类的构造方法
2.父类也叫超类(基类),子类也叫派生类
3.继承需要满足的条件:
如:猫 是 动物等
4.继承具有两大特性:
一个类只能继承一个直接的父类,也就是类的单根性
类具有传递性
例:
class A{
//2个属性,2个方法
}
class B extends A{
//独有属性1个,独有方法3个
//即一共有属性:3个,方法:5个
}
class C extends A{
//独有属性1个
//即一共有属性:3个,方法:2个
}
class D extends B{
//即一共拥有属性:3个,方法:5个
}
5、重写方法
1.override也叫覆盖
1)子类方法名称必须与父类方法名称一致
2)参数列表一致
3)返回类型一致或父类方法返回类型的子类类型
4)修饰符一致(修饰符不能缩小范围)
2.子类不能重写
1)构造方法不能重写
2)属性不能重写
3)静态方法不能重写
4)私有方法不能重写
Animal类
public class Animal {
String name;//姓名
int age;//年龄
String color;//颜色
public void print() {
System.out.println("姓名:" + name);
System.out.println("年龄:" + age);
System.out.println("颜色:" + color);
}
}
Dog类继承Animal类
public class Dog extends Animal{
String Varieties;//品种
//重写也叫覆盖override:在子类中重写父类的方法,必须与父类中的方法名称一致、参数列表一致、返回类型一致
public void print() {
//在子类中可以直接访问父类中的属性(前提:父类中的属性没有使用private修饰)
System.out.println("姓名:" + name);
System.out.println("年龄:" + age);
System.out.println("颜色:" + color);
System.out.println("品种:" + Varieties);
}
}
AnimalTest类
public class AnimalTest {
public static void main(String[] args) {
Dog dog = new Dog();
dog.print();
}
}
输出结果为: