一、面向对象基础
1.基本概念
对象:用来描述客观事物的一个实体,由一组属性和方法构成。
类:具有相同属性和方法的一组对象的集合。
类是对象的抽象,对象是类的具体。
定义类的步骤:
(1)定义类名
(2)编写类的属性
(3)编写类的方法
方法代码模板/语法:访问修饰符+返回值类型+方法名(){方法主体}
创建对象语法:类名 对象名=new 类名();
2.参数
带参数的方法可以接受用户输入的内容。创建方法时定义的参数叫做形式参数,简称形参。调用方法时传入的参数叫做实际参数,简称实参。
方法有没有返回值和方法有没有参数没有关系,方法参数可以有一个,也可以有多个,中间用逗号隔开。形参和实参的数量要一致,数据类型要一致。实参和形参的类型必须一致,名字可以一致,也可以不一致。
3.方法调用
(1)同类时,直接写方法名
(2)不同类时,先创建对象,用对象调方法。
4.方法重载
同类、同名、不同参
在同一类中,方法名相同,参数的个数或者类型不同。
5.成员变量和局部变量的区别
(1)作用域不同:局部变量的作用域仅限于定义它的方法,在该方法外无法访问它。成员变量的作用域在整个类内部 都是可见的,所有的成员方法都可以使用它,如果访问权限允许,还可以在类外部 使用成员变量。
(2)初始值不同:对于成员变量,如果在类定义中没有赋予初始值,java会给它一个默认值。但是 java不会给局部变量赋予初始值,因此局部 变量必须要定义并赋值后再使用
(3)再同一个方法中,不允许有同名的局部变量。在不同的方法中,可以有同名的局部变量
(4)局部变量 可以和成员变量同名,并且在使用时,局部变量具有更高的优先级。
6.构造方法
定义构造方法的语法:访问修饰符 方法名(参数列表){方法体}
所有类中都有一个默认和类名一样,并且没有返回值类型的特殊方法。
作用是创建对象,赋初始值。
构造方法默认提供一个无参,但是一旦系统发现自定义了,就不再分配无参构造函数了。
7.访问修饰 符
public:访问权限为任何地方
protected:访问权限是子类及其以下
默认修饰符:访问权限是同一包中
private:访问权限是同一类中
二:继承和多态
继承通过 extends关键字实现
用super关键字调用父类
object为超级父类,是所有类的父类
方法 重写:
--重写方法和被重写方法必须具有相同的方法名
--重写方法和被重写方法必须具有相同的参数列表
--重写方法和被重写方法的返回值类型必须相同
--重写方法不能缩小被重写方法的访问权限
方法重载和方法重写的区别:
方法重载涉及同一类中的同名方法,要求方法名相同,参数列表不同,与返回值类型无关。
方法重写涉及的是子类和父类之间 的同名方法,要求方法名相同、参数列表相同。返回值类型相同。
子类向父类转:<父类型><引用变量名>=new <子类型>();
父类向子类转:<子类型><引用变量名>=(<子类型>)<父类型的引用变量名>
instanceof:判断某一个对象是否属于某一种类型。
多态的优势:
--可替换性:多态对已存在的代码具有可 替换性
--可扩充性:多态 对代码具有可扩充性。
--接口性:多态是父类向子类提供了一个共同接口,由子类来具体实现。
--灵活性:多态在应用中体现了灵活多样的操作,提高了使用效率。
--简化性:多态简化了应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。
三、抽象类和接口
1.抽象类
当一个类或者一个类的方法被abstract修饰,成为抽象类或者抽象方法。
当一个方法被定义成一个抽象方法后,意味着该方法不会有具体的实现,而是在抽象类的子类中通过方法重写进行实现。
访问修饰符 abstract <返回值类型><方法名>(参数列表);
抽象方法没有方法体,抽象类不能被实例化。
--可以没有抽象方法,但包含了抽象方法的类必须被定义为抽象类。
--如果子类没有实现父类的所有抽象方法,子类必须被定义为 抽象类。
--没有抽象构造方法,也没有抽象静态方法。
--抽象类中可以有非抽象的构造方法,创建子类的实例时可以调用。
2.接口
接口是一个不能实例化的类型,接口的变量是静态常量。
定义 接口使用interface修饰符,访问修饰符只能是public,接口成员可以是全局常量和公共的抽象方法。
使用接口必须通过子类,子类通过implements关键字实现接口。
实现接口的类必须实现接口中定义的所有抽象方法。
一个普通类只能继承一个父类,但是可以同时继承多个接口,也可以同时继承抽象类和实现接口。
抽象类vs接口
相同点:
--代表系统的抽象层
--都不能被实例化
--都能包含抽象方法
不同点:
--在抽象类中可以为部分方法提供默认实现,而接口中只能包含抽象方法。
--一个类只能继承一个直接父类,但是可以实现多个接口。
--已存在的继承树,可以方便的抽取接口,但是抽取抽象类不容易。
使用原则:
--接口做系统与外界交互的窗口
--接口本身一旦制定,就不允许随意修改
--抽象类可完成部分功能实现,还有部分功能可作为系统的扩展点
四、异常
所有的异常类型都是Throwable类的子类,它有两个子类:Error类和Exception类
(1)Error类:仅靠程序本身无法恢复的严重错误,如内存溢出、动态链接失败、虚拟机错误。
(2)Exception类:由java应用程序抛出和处理的非严重错误,如所需文件找不到、网络连接不通或者连接中断、算术运算出错、数组下标越界、装载一个不存在的类、对null对象操作、类型转换异常等。
java异常处理通过5个关键字实现:try/catch/finally/throw/throws
try-catch块中存在return语句,finally块继续执行,执行顺序为先执行catch块,发现异常,处理异常,然后执行finally块,最后跳回return。finally唯一不执行的情况是:System.exit(1);