继承的关键字是extends
extends用法:图片中的句子也叫签名
继承是Java中类与类之间的一种关系
使用继承的好处就是可以用父类封装所有子类可以用到的公共代码,让子类继承,实现代码的复用
发生继承的类称为子类,被继承的类称为父类
一个类只能继承一个父类,但是一个父类可以有多个子类
如果一个类没有显式继承父类,则隐式继承Object类
Java不支持多继承,只支持单继承,但支持多级继承
Dog dog = new Dog();
//这个是Dog类自己的方法
dog.strain = "哈士奇";
//在Dog类找不到level这个变量和setSex()这个方法,往上追溯到父类Animal可以找到这个变量和方法
dog.level = 10;
dog.setSex('公');
//在dog类找不到toString()这个方法
//往上追溯到父类Animal类也找不到
//再往上追溯到Object类找到了toString()这个方法
System.out.println(dog);
System.out.println(dog.toString());
//直接打印指针等同于打印toString()方法的返回值
//Object类中toString()这个方法返回的是包名.类名+主机的东西
System.out.println("finish");
运行结果:
在继承体系的顶层是Object类,Object类称为祖先类,上帝类
在构造方法中的第一行处有一条隐式指令super()调用其父类的构造方法
this和super的区别this是指向当前对象,super是指向当前父类对象
this和super的使用语法
1、调用构造方法(只能在构造方法中调用,而且必须出现在第一行)
this();可以使用this()调用本类的构造方法
super();可以使用super()调用父类的构造方法
2、访问成员
this.成员变量
super.成员变量
this.成员方法
super.成员方法
子类可以继承父类的非私有(非privat修饰)成员(包括成员变量和成员方法)但把父类中的所有成员变量私有化,用private修饰符修饰时,此时子类的对象指针无法访问所有用private修饰的成员变量
父类的构造方法不能被子类继承,但可以被子类调用,且子类的无参构造方法中默认调用父类的无参构造方法
入栈顺序先子类再父类最后祖先类,堆区创建对象顺序先祖先类再父类最后子类
静态变量和静态方法能继承吗?继承测试
静态变量和静态方法不在继承的范畴内,这个问题毫无意义
能发生继承关系的类在逻辑上应该具有一种“ is a ”的关系比如:
Dog is a Animal
Cat is a Animal
Pig is a Animal



