ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
~~~ 继承: 继承的概述: 1.提高了代码的复用性,简化了代码 2.让类与类之间产生了继承关系,才有了后面的多态特性的存在 3.注意:千万不要为了获取其他类的功能简化代码,而建立继承关系,必须要类与类之间存在继承关系,继承关系:is a ~~~ ~~~ package obj.b6; //父类,超类,基类 class Person{ String name; int age; } //子类 class Student extends Person{ void study(){ System.out.println("学习"); } } class Teacher extends Person{ void teach(){ System.out.println("教书"); } } public class Test { public static void main(String[] args) { // TODO Auto-generated method stub } } ~~~ ~~~ 继承概述_2 子类拥有父类的成员,子类不能拥有父类中被private修饰后的成员 ~~~ ~~~ java多层继承 在多层继承中最下层拥有整个继承体系的成员,最上层的父类里面定义了所有子类的共性描述 ~~~ ~~~ java中不支持多继承,只支持单继承。因为多继承存在安全隐患,当多个父类定义了相同的成员,子类对象不确定运行哪一个。 但java保留了这种机制,并用了另一方式来体现 多实现(接口?) ~~~ 子父类成员特点 成员: 1.成员变量 2.函数 3.构造函数 ![](https://box.kancloud.cn/b80be2e03fd2411948720688cd787ab4_1007x580.png) ~~~ 变量: this 代表当前对象的引用this.变量 首先在本类中找所需要的这个变量,如果没有找到再到父类中找。 super 用于访问当前对象的父类成员,super.变量 直接父类中找所需的变量 1.子类覆盖父类时,必须保证子类的权限大于等于父类,才可以覆盖,否则编译出错 访问权限修饰符:public>default>private 成员前面没加任何权限修饰符默认权限就是default 2.静态的函数只能覆盖静态的 记住: 重载:只看同名方法的参数列表 重写:子父类方法要一模一样 有了子父类之后构造方法的特点: 在对子类对象进行初始化的时候,父类的构造方法也会运行,那是因为子类的构造函数默认第一行有一条隐式的语句super(); 子类的每个构造方法第一行都有一个隐式的super(); ~~~ ~~~ package obj.b7; //父类,超类,基类 class fu{ String name; fu(){ System.out.println("父类构造方法"); } } //子类 class zi extends fu{ zi(){ //super(); System.out.println("子类构造方法"); } } public class Test { public static void main(String[] args) { zi z=new zi(); } } ~~~ ![](https://box.kancloud.cn/27778b342bb1aea0f42ebdbeda36497c_144x93.png) ~~~ package obj.b7; //父类,超类,基类 class fu{ String name; fu(){ System.out.println("父类构造方法"); } fu(int age){ System.out.println("父类有参构造方法"); } } //子类 class zi extends fu{ zi(){ //super(); super(18); System.out.println("子类构造方法"); } } public class Test { public static void main(String[] args) { zi z=new zi(); } } ~~~ ![](https://box.kancloud.cn/d45fb0eabfece09a14b6b8e111ac55cd_157x58.png)