修饰符
1.包
包的概述和使用
包其实就是文件夹,作用是对类进行分类管理。
包的定义格式:
package 包名(多级包用.分开)
示例 package.com.itheima;
带包的Java类编译执行
手动建包 正常的用javac编译生成class 建立包名对应的文件夹,将生成的class文件放进去。
自动建包 javac -d.HelloWorld.java
调用时候要带包调 java 包名.HelloWorld.java
2.导包
导包的概述和使用
使用不同包下的类时,使用时要写类的全路径,太麻烦了,为了简化操作,java提供了导包的功能。
导包的格式
import 包名;
示例: import com.it_01.Teacher;
3.修饰符
权限修饰符:
访问权限
修饰符 同一个类中 同一个包中不同类中 不同包的子类 不同包的不同类
private √
默认 √ √
protected √ √ √
public √ √ √ √
状态修饰符:
final:
final关键字时最终的意思,可以修饰成员方法,成员变量,类
被final修饰的特点:
修饰方法: 该方法是最终方法,不能被重写。
修饰变量: 该变量是常量,不能被再次赋值。
修饰类: 表明该类是最终类,不能被继承。
final修饰局部变量:
变量是基本数据类型: 基本类型的数据值不能被改变。
变量是引用数据类型:引用数据类型的地址值不能发生改变,但是地址中的内容是可以发生改变的。
static:
static关键字是静态的意思,可以修饰成员方法,成员变量。
被static修饰的特点:
被类的所有对象共享 这个是我们判断是否使用静态关键字的条件
可以通过类名调用
也可以通过类名调用
推荐使用类名调用。
static的访问特点:
非静态的成员方法:
能访问静态的成员变量
能访问非静态的成员变量
能访问静态的成员方法
能访问非静态的成员方法
静态的成员方法:
能访问静态的成员变量
能访问静态的成员方法
总结:
静态成员方法,只能访问静态成员。
多态
1.多态概述:
同一个对象,在不同时刻表现出来的不同形态。
举例:
猫 cat = new 猫();
动物 animal = new 猫();
这里的猫在不同的时刻表现出来了不同的形态,这就是多态。
多态的前提和体现:
有继承或者实现关系
有方法重写
有父类引用指向子类对象
2.多态中成员访问的特点:
成员变量: 编译看左边,执行看左边;
成员方法: 编译看左边,执行看右边;
为什么成员变量和成员方法的访问不一样呢?
因为成员方法有重写,而成员变量没有。
3.多态的好处和弊端:
好处:
提高了程序的扩展性, 定义方法的时候,使用父类作为参数,使用的时候具体的子类参与操作
弊端:
不能使用子类的特有功能。
4.多态中的转型
向上转型: 从子到父,父类引用 指向 子类对象
向下转型: 从父到子,父类引用 转为 子类对象
5.多态转型的内存图