1. 类、方法、变量
类的2要素:属性、方法
方法5要素:修饰符、返回值类型、方法名(参数){方法体}
变量三要素:修饰符、变量名、值
2. Static
- 静态方法不能使用非静态方法和变量
- 调用直接使用 类名.属性 类名.方法()
创建一个子类和父类,均含有static修饰代码块,当new一个子类,父类引用指向,运行顺序:父类static代码块---->子类static代码块---->父类构造方法---->子类构造方法
2.1. 实例
2.2. 实例
New多个实例,静态代码块只执行一次
运行结果:
3. Final
- final修饰属性,被修饰的属性为常量,无法改变
- final修饰的类不能被继承,即不含有子类
4. 值传递与引用传递
在实参为形参传值的时候;其实都是值传递.(只不过引用传递的值,是内存地址,和开发人员声明的变量的值无关)
5. 构造方法
- 方法名与类名相同
- 没有返回值(不含有void)
- 如果没有定义构造方法,系统会生成一个无参的构造方法
6. 重载
- 发生在同一个类中
- 方法名一样
- 参数的个数或者参数类型不一样
构造方法出现两个以上肯定构成重载
7. 重写
- 发生在两个类中
- 拷贝父类中方法,方法名、参数、返回值类型都必须与父类相同
- 子类方法修饰符大于等于父类方法修饰符
8. 多态
- 多态三要素:继承、重写、父类引用指向子类对象
- Instanceof用于判断对象的本质类型
Animal animal=new People();
animal instanceof People值为true
- 子类转父类永远成功:调用方法还是子类本身方法;如果子类中不存在该方法,调用父类中方法
- 父类转子类,强制转换
转换前提:创建的本质是子类。如果创建的本质是父类型,则无法实现从父到子类的转换
9. 异常
try{
代码块;
}catch(Exception e)
{
代码块;
}finally{
代码块;
}
- a方法调用b方法(都含有try-catch-finally结构)
n 当b方法中出现异常,并在b方法中被catch捕获,则a不会再捕获异常
n 当b方法中出现异常,并且没有在b中被捕获,则会上报a,在a中捕获异常
10.抽象方法
public abstract void run();
特殊的方法:
- 使用abstract修饰的方法
- 不存在方法体,方法体交给子类实现
11. 抽象类
public abstract class Animal
- 含有一个及以上抽象方法的类,可以含有非抽象方法
- 只对方法进行规定,并未对属性进行规定
- 抽象类不能new
12. 接口
一个特殊的抽象类:
- 所有的方法都是抽象方法(默认参数修饰为public abstract void)
- 所有属性int i=0;(默认类型为public static final)
- 如果一个类实现了某个接口,则要实现接口中所有的方法
- 一个类只能有1个父类(继承),可以有多个接口(实现)
- 接口命名前加I
- 接口的继承
[public] interface 标识符(接口名) [extends] 父接口
- 接口的实现
[public] class 标识符(类名) [extends]父类implements [接口1],[接口2]
13. 字符串
- String加上任何类型的结果都为string
- tostring输出结果: 包名 类名@十六进制哈希码(地址)
- 输出数组 :循环
Array.tostring()