方法
- 如果方法的修饰符是
static
方法可以被别的类直接调用 - 非静态方法
(没有static)
需要new一个类 - 值传递和引用传递(相当于是c语言中的指针)
- 一个项目应该只存在一个
main
方法
构造器
- 一个类就算什么都不写也会存在一个方法
- 构造器(构造方法)名字必须和类名相同,且不能有返回值
- 使用new关键字,本质是在调用一个构造器
- 如果定义了有参构造,必须显式定义无参构造
- 构造器一般用来赋初值
alt+insert
快捷键可以生成构造器
封装:属性私有,getset
- 使用
private
关键字的属性不可更改值 - 提供一些
get
和set
方法,可以认为是权限的大小不同 alt+insert
里面有 getter和setter
继承:extends
- 继承是一种扩展
- 在java中所有的类都默认继承Object类
- java只有单继承
- super调用的父类,this是当前的
- 子类的构造器里面会隐式调用父类的构造器(super)
- 子类的构造器如果显示调用父类构造器一定要写在第一行(super)
重写
- 修饰符:范围可以扩大不可缩小 public>protected>default>private
- 抛出异常可以被缩小不可扩大
- 子类重写父类的方法
- 方法名字相同,参数列表相同
- 为何重写:父类的功能太多或太少
多态
- 一个对象的实际类型是确定的,但是可以指向的引用类型不确定
- 对象能用哪些方法和左边有关,和右边关系不大
- 属性不存在多态
- 条件是存在继承关系,方法需要重写,父类的引用指向子类对象
- 同一个方法根据发送对象的不同而采取多种不同的行为方式
instanceof
- 类型转化,子类转化为父类可能丢失一些方法。
- 子类转化为父类(向上转型)
- 父类转化为子类(向下转型)需要强制转换,可能丢失一些方法
static关键字
- 静态变量可以直接用类名调用而不创建对象
- 非静态方法可以直接访问静态方法,静态方法可以调用静态方法
- 静态代码块在构造器之前执行,只执行一次
- 静态导入包可以直接调用
抽象类
- 用abstract来修饰类
- 抽象方法只有方法名字,没有方法实现
- 抽象类的所有方法,继承其的子类必须实现(除非该子类也是抽象方法)
- 抽象类不能new出来
- 抽象类里面必须写普通方法,抽象方法必须包含在抽象类里面
接口:本质是契约
- interface
- 接口中所有的定义都是public abstract
- 类可以实现接口,使用implement关键字,实现接口的类,必须重写接口中的方法
- 接口实现伪多继承
- 接口里面的常量都是 public static final
- 接口不可实例化
内部类
- 内部类可以获取外部类的静态属性
- 1个java类文件中只能有一个public 类,但是可以有多个类
- 方法里面也可以写类(局部内部类)
- 内部类可以没有名字(匿名内部类)
异常
技巧
i.sout