JAVAOOP

JAVA OOP

第一章对象和封装

编程思想:
1,面向过程
C 汇编
2,面向对象
Java C# C++ python Php 易语言

类是一种特殊数据类型
数据类型
基本数据类型 byte short int long double float char boolean
引用数据类型 String Array Scanner File Random 自定义

构造方法
方法名和类名相同,并且没有返回值类型。
主要的作用是实例化对象。

还可以使用有参构造给属性初始化值。

特征:
1,系统会默认一个无参构造(隐藏)
2,当写了一个有参构造方法时,系统自带的无参构造方法会消失。

经验:一般在写有参构造时,同时会把无参构造一并写出来。

方法重载:overload
两同三不同
同一个类中,同一个方法名。
参数列表不同(个数,类型,顺序)

static 关键字 :静态
1,修饰变量
静态变量,类变量(从属于类),相当于全局变量。
可以通过类名.变量名
也可以通过对象名.变量名
2,修饰方法
静态方法,类方法(从属于类)
可以通过类名.方法名()
也可以通过对象名.方法名()
3,修饰代码块,静态代码块
是在类加载时候就运行,先于main方法运行。

static{ //代码块 }

注:
1,在实例方法中,不可以定义静态变量,可以调用。
2,在静态方法中,不可以调用实例方法,只能调用静态方法。
3,在实例方法中,可以调用静态方法。

面向对象的三大特征:
封装,继承,多态

封装:
将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问

this 关键字
表示对当前对象的引用。
可以调用本类的属性和方法。
构造链:
this(); 表示调用本类的构造方法,可以写参数。
注:this();只能写在构造方法中。而且只能在构造方法中的第一行。

第二章继承

面向对象
封装 继承 多态
接口

继承 extends

子类(派生类)和父类(超类,基类)

this 表示对本类对象的引用
调用本类的属性和方法
this(); 调用本类的构造方法,必须写在构造方法中的第一行
super 表示对父类对象的引用
调用父类的属性和方法
super(); 调用父类的构造方法,必须写在构造方法中的第一行

super(); 在构造方法中 是隐式存在。

子类不能继承父类的什么?
1,私有成员 private 修饰的属性和方法
2,构造方法
3,子类和父类不在同包下,使用默认访问权限的成员

继承的特点:
1,子类(派生类)和父类(超类,基类)
2,java中的类只能单继承(只能有一个父类)。但是可以多重继承。
3,一个类如果没有extends关键字,则继承Object
4,子类创建时,先创建Object, 再创建父类,最后创建子类

访问修饰符:
private < 默认的(不写) < protected < public

public 修饰的,所有地方所有类都可以放放
private 修饰的,只能在本中访问
protected 修饰的,同一包中的类都可以访问
默认的 修饰的。在同一包中类可以访问,不同包中的子类不可以访问。

符合is-a关系的设计使用继承

方法重载:overload 在同一个类中不同的参数列表(个数,顺序,类型)
方法重写: override

当父类方法不能满足子类的需求时,需要方法的重写。
特点:	子类对父类方法的重写
	方法名,参数列表 必须和父类的相同
	返回值类型和父类相同或是其子类
	访问权限不能严于父类

抽象: abstract
Pet pet = new Pet(“贝贝”,18);
pet是宠物,不知道指的是什么,所有pet对象很抽象。
pet.voice();叫声方法,这个方法实现没有任何意义。所以这个方法也很抽象。

抽象的反义词,具体。
abstract 修饰 类,叫抽象类。
	这个类不能实例化。这个类只能被继承。
	抽象类中可以有抽象方法,实例方法。

abstract 修饰方法 ,叫抽象方法	
	这个方法没有方法体,那么这个方法只能被子类重写
	有抽象方法的类必然是抽象类
抽象方法和抽象类是一种规范作用。

final 最终的
1,修饰变量 常量 值不可变
public final int a =1;
2,修饰方法
方法不能被重写。
3,修饰类

第三章多态

继承:extends
方法重写
方法重载

抽象 abstract 
抽象类:
	不能实例化,有构造方法。
	抽象类中,有实例方法,抽象方法

抽象方法:
	没有方法体
	有抽象方法的类 必然是抽象类或接口。
	抽象方法必须被子类重写,除非子类也是抽象类。

final关键字
	fianl修饰的类  String

多态:

什么是多态?

同一个类型的对象,调用同一个方法,得到不同的结果。
Animal a = new Dog1();  父类的引用 指向 子类的对象。向上转型。自动转向。

编译时类型为 Animal 
运行时类型为 Dog1

多态形成的必要条件:
1,要有继承
2,父类的引用 指向 子类的对象
3,要有重写方法

instanceof
if(pet instanceof Dog){ //判断pet是否时Dog类的实例对象
// 将pet对象转换成Dog对象 父类转子类 向下转型 强制转换
Dog dog = (Dog) pet;
dog.play();
}

java.lang.ClassCastException 异常 ,类转换错误异常 ,不能将Dog对象转换成Cat

第四章接口

接口:interface
将class改成interface
//接口
public interface Lock{

}

特点:
1,将class改成interface 是一个特殊的类
2,接口中的方法都是公共抽象方法。隐式 抽象方法 。不能实例方法
3,接口没有构造方法,也不能实例化。只能被实现(implements)
4,一个类可以实现多个接口,实现类中必须实现接口中的所有方法。
5,接口中的变量都是隐式的静态常量。


关系
​ 类和类 : 单继承关系
​ 类和接口:多实现关系
​ 接口接口:多继承关系

interface1 extends interface2,interface3 {

}
class test1 extends class1 implements interface1{

}
class class1 implements interface1,interface2{

}

抽象类和接口的区别
相同点:
1,不能实例化
2,抽象类和接口中的抽象方法必须被实现。

不同点:
1,抽象类有构造方法,接口没有
2,抽象类有实例方法,接口只有抽象方法
3,抽象类属于单继承,接口可以多继承
4,抽象类中成员变量可以是各种类型的,接口只有静态常量

jdk1.8之后
允许有默认方法和静态方法。
jdk1.9之后
允许有私有方法

第五章异常

Java API java应用程序接口
学习已经写好的类。

异常 Exception
异常是指 程序在运行过程中发生了不可预料的错误,导致程序无法继续运行。

异常体系结构

Throwable (可抛出的)
/	\
     Error(错误)	Exception	(异常)
	/	\
CheckException	RuntimeException(运行时异常,可以不处理)
(检查异常,必须要处理)

Error:表示非常严重的错误。程序员一般不可修复。
Exception :表示非严重的错误,可以通过异常捕获解决。

常见的异常:
java.util.InputMismatchException 输入不匹配异常
java.lang.ArithmeticException 算术异常
ArrayIndexOutOfBoundsException 数组下标越界
NullPointerException 尝试访问 null 对象成员
ClassNotFoundException 不能加载所需的类
IllegalArgumentException 方法接收到非法参数
ClassCastException 对象强制类型转换出错
NumberFormatException 数字格式转换异常,如把"abc"转换成数字
IndexOutOfBoundsException
StringIndexOutOfBoundsException
FileNotFoundException 文件未找到异常
IOException 输入输出流异常
SQLException

S3BCSP Spring全家桶 Spring SpringMVC SpringBoot SpringCloud SpringSecuitry

SSH
SSM

解决异常:
try{
//可能发生异常的代码块
}catch(Exception e){
//捕获异常后的处理代码块
}finally{
//不管有没有异常都会执行的代码块
}

注:一个try可以接多个catch块,多个catch块 先捕获子类再父类
       如果main方法 有 Throws异常 ,则会将异常交给JVM处理。

throws:声明异常
	写在方法后面,表示声明该方法有异常。谁调用谁处理。
throw: 手动抛出异常,本身就是一个异常,需要进行处理。

异常对象的方法
e.printStackTrace(); 打印栈轨迹
e.getMessage(); 异常的消息

第六章集合框架

集合框架
变量:存储单个值。
数组:存储同一种数据类型的多个数据,长度不可变。
集合:存储一组任意数据类型的集合,长度可变。

体系
4个接口
Collection 收集,集合
/
List(列表) Set(集合) Map(地图)
实现类:
List:ArrayList、LinkedList 三有产品:有顺序,有下标,有重复
Set:HashSet、TreeSet 三无产品:无顺序,无下标,无重复
Map:HashMap、TreeMap 键值对:key-value

java中万物皆对象
除了基本数据类型
为了达到万物皆对象,给基本数据提供了相对应的封装类。

基本数据类型		封装类
int			Integer
char			Character
装箱:将基本数据类型转成封装类		自动装箱和拆箱
	int a = 1;
	Integer b = a;//装箱
拆箱:将封装类型转换成基本数据类型
	Integer a = 1;
	int b = a;

ArrayList
底层实现的是数组
LinkedList
底层实现的是双向链表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值