- 面对对象
- 三大特征:
封装性:所有的内容对外部不可见;
继承性:将其他的功能继承下来继续发展;
多态性:方法的重载本身就是一个多态性的体现。
- 三大思想:
OOA:面对对象分析
OOD:面对对象涉及
OOP:面对对象程序
- 类与对象
类 = 属性+方法
注意:
- 一个.java文件中,可以存在n个类,但是只能存在一个public修饰的类;
- .java文件的名称必须要与public修饰的类名完全一致;
- 构造方法
方法名{
}(与类名完全相同)
执行时机:在对象创建时进行初始化。
PS:如果一个类中无构造方法,那会自动生成一个无参构造方法,也可以自己创建有参的构造方法。
- 方法重载
- 在类中的一个方法是允许被重载的;
- 能构成重载的因素:
(1)、 方法名称相同
(2)、 参数列表长度或参数列表类型或参数列表顺序不同
注意:与返回值类型无关
最后,程序会根据方法参数类型是否匹配进行调用
- 匿名对象
在堆内存中有数据(开辟了存储空间),但无栈内存的引用,因此只能使用一次
- 封装
原则:隐藏对象的属性和实现细节,仅对外公开访问方法,并且控制访问级别。
- This
在一个构造方法中调用另一个构造方法,必须把该语句放在第一行
- Static 静态
静态修饰的属性,在类的加载时就可以被调用,其相当于类的属性。
静态修饰的方法被调用时,对象可能还没被创建。
在访问时,静态不能访问非静态,非静态可以访问静态。
- 包
通常由多个单词组成,所有单词的字母小写,单词与单词之间用.隔开
- 代码块
- 构造代码块:随着对象的每次创建,执行一次,且执行在构造方法之前
- 静态代码块:static,随着类的加载,静态代码块执行,因为类只加载一次,所以静态代码块只执行一次。
构造代码块区别与构造方法的是:无论用户调用哪一个构造方法来创建对象,构造代码块都必然执行。
十一、 继承
- Class 子类 extends 父类{
}
- 继承的限制:
Java只有单继承,多重继承,没有多继承
- Super:可以访问父类的构造方法;可以访问父类的属性;可以访问父类的方法。调用时必须放在类的构造方法中的第一行,不能和this同时调用。
十二、 重写与重载
- 重写的规则:
- 参数列表必须完全与被重写的方法相同
- 返回类型必须完全与被重写的方法的返回类型相同
- 访问权限不能比父类中被重写的方法的访问权限更低
- 父类的成员方法只能被它的子类重写
- 声明为Static和private的方法不能被重写,但是能够被再次声明
重载(overload)和重写(override)的关系与区别:
- 应用:重写在子类中发生;重载是在一个类中
- 参数列表限制:重载要求不同;重写要求相同
- 返回值类型:重写要求返回值一样
- 访问权限:重写要求访问权限一样
- 异常处理:重载与异常无关;重写的异常范围可以更小,但是不能抛出新的异常
十三、 Final关键字
通过final修饰的属性和方法都是常量,无法对他进行赋值。
- 如果是局部变量,可先声明后赋值一次
- 成员变量,必须在声明是赋值
- 全局常量: (1)、修饰的类不能被继承;(2)、修饰的方法不能被子类重写
十四、 抽象类(含抽象方法的类)
使用abstract class声明。
注意:1、 抽象类本身是不能被实例化的,即不能直接使用关键字new;
- 一个抽象类必须被子类继承,被继承的子类如果不是抽象类,则必须重写抽象类中的全部抽象方法。
- 抽象类不能使用final声明
- 抽象类也可以有构造方法
抽象类和普通类的区别
- 抽象类必须用public或protected修饰
- 抽象类不可以使用new创建对象,但是子类创建对象时,抽象父类也会被Jvm实例化
- 如果一个子类继承父类,子类仍有为被实现的方法,该子类也要被定义为抽象类。
十五、 接口
- Intetface 接口名称{
全局常量;
抽象方法;
}
- 接口多实现
Class 子类 implements 父接口1,父接口2{
}
Class 子类 extends 父类 implements 父接口1,父接口2{
}
十六、 instanceof
判断传入对象的类型
十七、 object类
是所有类的父类,用于接收任意的引用数据类型。