public class 子类名 extends 父类名 { }
注意事项:Java 不支持多继承 可以多层继承 (一个类不可以直接有多个父类,可以有父类的父类)
让类3与类之间产生关系,可以使得子类具有父类的属性和方法,还可以在子类中重新定义,追加属性和方法
提高了代码的复用性和可维护性.
复用性:父类有的代码子类都有 (成员变量 和成员方法 不包括构造方法)
维护性:父类统一管理子类 父类修改代码所有子类都跟着改变(也是弊端)
增强了代码的耦合性(削弱了子类的独立性),子类不得不受父类影响
继承虽好,但是要满足 is a 关系才可使用 让两个类产生关系
苹果 是 一种 水果 设计水果为父类 苹果为子类
猫 是 一种 动物 设计 动物为父类 猫为子类
经理 程序员 员工 设计 员工 为父类 经理 程序员分别继承 员工类
而 经理类 和程序员类 不应该产生继承关系
在子类中方法使用一个变量 (就近原则)
子类局部变量
子类成员变量
父类成员变量
如果没有就报错(不考录父类的父类)
Tips:
成员变量 和 局部变量重名 使用this.变量名 表示成员变量
子类成员变量和局部变量 成员变量重名 使用 super.变量名 表示 父类成员变量 在没有重名的情况下 根据变量作用域使用变量
子类的对象使用一个方法 (就近原则)
子类成员范围找
父类成员范围找
如果没有就报错(不考录父类的父类)
Tips:
在一个类中调用 本类的方法 实际上是this.方法名()
在子类方法名和父类重名的情况下 可以用super.方法名()
定义:子类中出现了和父类中"一模一样"的方法声明
书写:重写时
修饰符范围 要大于等于父类
返回值类型 为父类返回值的类型 或 父类返回值的类型的子类
范围原因:(里氏原则) /多态时执行看右边 要保证程序能被执行到(其他类其他包中可能不能够被取到)
使用场景:父类方法不能满足子类的要求
Tips:用 @Override 注解 可帮助我们检查重写方法声明的正确性
子类不能重写父类private修饰的方法 访问不到
子类中的所有构造方法 默认访问父类中的无参构造方法
即子类所有构造方法第一行默认有一个super()
为什么?
子类除了继承父类数据,子类可能使用父类的数据 所以在子类初始化之前,要完成对父类数据的初始化
在显示调用 super(参数列表)后 java 将不在提供super()
super(参数列表)只能放在第一行
继承时的内存图
this和super 都能调用构造方法 都需要书写在构造方法的第一行(要先初始化在使用)
this和和super 只能存在一个 1.只有一个第一行 2.无论this在前还是super在前 都会对父类进行两次初始化
new 关键字
https://docs.oracle.com/javase/tutorial/java/javaOO/objectcreation.html
创建一个对象 Apple apple = new Apple()
三个过程:
实例化
new运算符实例化一个类对象,通过给这个对象分配内存并返回一个指向该内存的引用。new运算符也调用了对象的构造函数。
注意:“实例化一个类的对象”的意思就是“创建对象”。创建对象时,你正在创造一个类的“实例”,因而“实例化”一个类的对象。
new运算符需要一个单一的,后缀参数,需要调用构造函数。构造函数的名称提供了需要实例化类的名称。
new运算符返回它所创建的对象的引用。此引用通常被分配给一个合适的类型的变量,如:Point originone =new Point(23,94);
由new运算符返回的引用可以不需要被赋值给变量。它也可以直接使用在一个表达式中。例如: int height = new Rectangle().height;
当Java语法层面使用new关键字创建一个Java对象时,JVM首先会检查相对应的类是否已经成功经历加载、解析和初始化等步骤;当类完成装载步骤之后,就已经完全确定出创建对象实例时所需的内存空间大小,才能对其进行内存分配,以存储所生成的对象实例。
实例化之后,进行初始化
是否可以访问(使用) 、作用域 该表针对成员变量来说的
修饰符 | 同一个类中 | 包中无关类 | 非同包有继承关系 | 非同包无继承 |
---|---|---|---|---|
private | Y | |||
default(不写) | Y | Y | ||
protected | Y | Y | Y | |
public | Y | Y | Y | Y |
final:表示最终 可以修饰 成员变量 ,成员方法,类
static:表示静态的意思,可以修饰成员方法,成员变量
特点:
怎么调用: 直接 类名.变量名 /直接类名.方法名()
静态成员和非静态成员 访问规则:静态成员方法只能访问静态成员
使用场景:工具类
工具类特点: