目录
继承
概述 面向对象三大特征之一,可以使得子类具有父类的属性和方法,还可以在子类中重新定义,以及追加属性和方法 格式 public class 子类名 extends 父类名{}
例:public class Zi extends Fu{}
Fu:是父类,也被称为基类、超类
Zi:是子类,也被称为派生类特点 子类可以有父类的内容
子类还可以有自己特有的内容
Object 类位于 java.lang 包中,编译时会自动导入
我们创建一个类时,如果没有明确继承一个父类,那么它就会自动继承Object,成为Object的子类
Object类可以显示继承,也可以隐式继承
好处 提高了代码的复用性(多个类相同的成员可以放到同一个类中)
提高了代码的维护性(如果方法的代码需要修改,修改一处即可)
应用场景 使用继承,需要考虑类与类之间是否存在is..a的关系,不能盲目使用继承
is..a的关系:谁是谁的一种,例如:老师和学生是人的一种,那人就是父类,学生和老师就是子类
变量访问特点 在子类方法中访问一个变量,采用的是就近原则
子类局部范围找
子类成员范围找
父类成员范围找
如果都没有就报错(不考虑父亲的父亲…)成员方法的访问特点 通过子类对象访问一个方法
子类成员范围找
父类成员范围找
如果都没有就报错(不考虑父亲的父亲…)关键字 构造方法的访问特点 super内存图 方法重写 注意事项
修饰符
包 概述:包就是文件夹,用来管理类文件的 定义格式:
package 包名; (多级包用.分开)
例如:package com.heima.demo;导包 意义:使用不同包下的类时,使用的时候要写类的全路径,写起来太麻烦了,为了简化带包的操作,Java就提供了导包的功能 格式:import 包名;
范例:import java.util.Scanner;
权限修饰符 状态修饰符 final 使用特点 注意事项 修饰变量:
final修饰变量时必须赋值
1. 定义时直接赋值
2. 在构造器中赋值
3. 在代码块中赋值
4. 如果final修饰的属性是静态的,初始化的位置只能是定义时和静态代码块中修饰方法:
1. 如果不是final类,但是含有final方法,则该方法虽然不能重写,但是可以被继承
2. final不能修饰构造方法修饰类:
1. final修饰的类不能被继承,但是可以实例化对象
2. 如果一个类已经是final类了,就没有必要将方法修饰为final方法final和static搭配使用,效率更高,不会导致类加载,底层编译做了优化处理
包装类 (Integer, Double, Float, Boolean等都是final),String也是final类 static使用特点 instanceof 操作符 x instanceof A:检验x是否为类A的对象,返回值为boolean型
要求x所属的类与类A必须是子类和父类的关系,否则编译错误
如果x属于类A的子类B,x instanceof A值也为true
多态
概述 成员访问 好处 提高了代码的扩展性;定义方法时,如果将父类型作为参数,在使用方法时,可以传递任意子类对象 弊端 不能使用子类的特有功能 向上转型 从子到父,父类引用指向子类对象
例:Animal a = new Dog();
向下转型 从父到子,父类引用转为子类对象
例:子类 对象名 = (子类)父类引用;
内存图
抽象类
概述 特点 成员特点
接口
概述 一种公共的规范标准,只要符合规范标准,都可以使用。java中的接口更多的体现在对行为的抽象 特点 成员特点 类和接口的关系 抽象类和接口的区别