1、重写 与 重载的区别
重写:发生在父子类中,方法名相同,参数列表相同
重载:发生在同一类中,方法名相同,参数列表不同
2、访问控制修饰符
1、public:任何类2、protected:本类、派生类、同胞类3默认的、本类、同胞类4、private:本类
3 final 修饰词的应用
1、修饰变量:变量不能被修改;
2、修饰方法:方法不能被重写;
3、修饰类:类不能被继承
4 static 修饰词的应用
1、修饰变量 所有对象所共享的数据,通过类名点来访问
2、修饰方法 属于类 方法的操作与对象无关 ,通过类名点来访问
3、静态块 属于类 在类被加载 期间 自动执行 。因为类只被加载一次
所以静态块只执行一次
static总结:1、加载时最先加载
2、通过类名点来访问,不用new对象//方便
5 static final 常量:
- 必须声明同时初始化
- 类名点来访问,不能被改变
- 建议:常量名所有字母都大写,多个单词用_分隔
- 编译器在编译时会将常量直接替换为具体的数,效率高
- 何时用:数据永远不变,并且经常使用
6 内存管理:由JVM管理
1、堆:new出来的对象(包括实例变量)
2、栈:局部变量(包括方法的 (int类似)参数)
3、方法区:.class字节码文件(包括静态变量,所用方法)
7 abstract 修饰词应用
1、修饰方法 只有方法定义 没有具体实现(连{}都没有)
2、修饰类
不能被实例化(new对象)
需要被继承,重写所有抽象方法(强制重写)
8 做功能的基本理念
若为某对象所特有的行为,则将方法设计在特定的类中
若为所有对象所共有的行为,则将方法设计在超类中
9 接口
- 是一种引用类型
- 由interface定义
- 只能包含常量和抽象方法
- 接口需要被实现
- 接口不能被实例化
- 一个类可以实现多个接口,用 , 分割先继承在实现
interface Inter{ int ABC_Q=10;//默认public static final // int a ;//编译错误 常量必须声明同时初始化 void say();//默认public abstract //void test(){}//编译错误 抽象方法不能有方法体 }
10 多态
- 意义:
同一类型的引用指向不同的对象时,有不同的实现--------所有抽象方法都是多态的
----行为的多态:cut()、getImage()、move()…
同一个对象被造型为不同的类型时,有不同的功能--------所有对象都是多态的(明天才能体会)
----对象的多态:我、你、水… - 向上造型/自动类型转换:
超类型的引用指向派生类的对象
能点出来什么,看引用的类型
能造型成为的数据类型有:超类+所实现的接口 - 强制类型转换,成功的条件只有如下两种:
引用所指向的对象,就是该类型
引用所指向的对象,实现了该接口或继承了该类 - 强转时若不符合如上条件,则发生ClassCastException类型转换异常
建议在强转之前先通过instanceof判断引用的对象是否是该类型 -
public class MultiTypeDemo { public static void main(String[] args) { Aoo o = new Boo(); //向上造型 Boo o1 = (Boo)o; //引用o指向的对象就是Boo Inter o2 = (Inter)o; //引用o指向的对象实现了Inter接口 //Coo o3 = (Coo)o; //运行时发生ClassCastException类型转换异常 if(o instanceof Coo){ //false Coo o4 = (Coo)o; }else{ System.out.println("o不是Coo类型"); } } } interface Inter{ } class Aoo{ } class Boo extends Aoo implements Inter{ } class Coo extends Aoo{ }