1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 使用JAVA实现面向对象编程基础

使用JAVA实现面向对象编程基础

时间:2019-04-07 06:33:56

相关推荐

使用JAVA实现面向对象编程基础

第一章 对象和封装:

构造方法特点:

方法名和类名相同

没有返回值类型

系统默认提供无参构造方法

自己编写构造方法后系统不提供默认构造方法

作用:

完成对象的实例化工作

方法重载(OverLoad)

在同一个类中,方法名相同,参数列表不同的方法称为方法的重载

参数列表不同指参数个数,类型或数量不同

static

将属性或方法修饰为静态

可通过类名直接引用

不需要创建对象引用

项目启动时实例化

在静态方法中不能直接引用非静态成员

第二章 继承:

继承通过 extends 关键字来实现

访问修饰符

访问修饰符 本类 同包 子类 其它

private √

默认 √ √

protected √ √ √

public √ √ √ √

进行重写的原因:

如果从父类继承的方法不能满足子类的需求,则在子类中可以对父类的同名方法进行重写,以符合要求

重写方法必须满足以下要求:

重写方法与被重写方法必须具有相同的方法名重写方法与被重写方法必须具有相同的参数列表重写方法的返回值类型必须和被重写方法的返回值类型相同或是其子类重写方法不能缩小被重写方法的访问权限

super 代表对当前对象的直接父类对象的默认引用。在子类中可以通过super关键字来访问父类的成员

*super 必须出现在子类(子类的方法和构造方法)中,而不是其他位置。

*可以访问父类的成员,如父类的属性,方法,构造方法。

*注意访问权限的限制,如无法通过super 访问private成员

抽象类和抽象方法的特点:

抽象类和抽象方法都通过abstract 关键字来修饰

抽象类不能被实列化

抽象方法只有方法声明,没有方法实现,有抽象方法的类必须声明为抽象类,子类必须重写所有的抽象方法才能实列化,否则子类还是一个抽象类

abstract 可以用来修饰类和方法,不能用来修饰属性和构造方法。

final 可以用来修饰类,方法和属性,不能修饰构造方法。

第三章 多态

子类到父类的转换(向上转型) 规则:

将一个父类的引用指向一个子类对象,称为向上转型,自动进行类型转换此时通过父类引用变量调用的方法是子类覆盖或继承父类的方法,不是父类的方法此时通过父类引用变量无法调用子类特有的方法

使用父类作为方法形参实现多态 (P70)

使用父类作为方法返回值实现多态 (P73)

父类到子类的转换(向下转型)

使用 instanceof 运算符 (P78)

/**

*测试 instanceof 运算符的使用

*

*/

public class Test{

public static void main(System.in){Pet pet=new Penguin("楠楠","Q妹");Pet pet1=new Dog("欧欧","雪纳瑞");pet.eat();if(pet1 instanceof Dog){Dog dog=(Dog) pet1;dog.prt();}else if(pet1 instanceof Penguin){Penguin pg=new (Penguin)pet1;pg.prtn();}}

}

注意:(Pet 是一个父类,Penguin是一个企鹅子类,Dog是一个狗子类,而prt()是企鹅类中的一个方法,prtn()是狗类中的一个方法)

第四章:接口

语法:

【修饰符】 interface 接口名 extends 父接口1,父接口2…{

//常量定义//方法定义

}

语法:

class 类名 extends 父类名 implements 接口1,接口2… {

//类成员

}

接口的说明:

接口的命名规则与类相同。如果修饰符是public,则该接口在整个项目中可见;如果省略修饰符,则该接口只在当前包可见。接口中可以定义常量,不能定义变量。接口中的属性都会自动用public static final修饰,即接口中的属性都是全局静态常量接口中所有的方法都是抽象方法。接口中方法都会自动用public abstract修饰,即接口中只有全局抽象方法和抽象类一样,接口也不能被实例化,接口中不能有构造方法接口之间可以通过extends实现继承关系,一个接口可以继承多个接口,但接口不能继承类接口的实现类必须实现接口的全部方法,否则必须定义为抽象类

第五章:异常

异常处理:

1.try-catch块

2.try-catch-finally块

常见的异常类型

异常 说明

Exception 异常层次结构的根类

ArithmeticException 算术错误情形,如以零作除数

ArrayIndexOutOfBoundsException 数组下标越界

NullPointerException 尝试访问null对象成员

ClassNotFoundException 不能加载所需的类

InputMismatchException 欲得到的数据类型与实际输入的类型不匹配

IllegalArgumentRxception 方法接受到非法参数

ClassCastException 对象强制类型转换出错

NumberFormatException 数字格式转换异常

3.多重catch块

4.声明异常–throws

5.抛出异常–throw

异常的分类

Throwable类:所有异常类型都是Throwable类的子类,它派生两个子类,即Error 和 Exception

Error类:表示仅靠程序本身无法恢复的严重错误,如内存溢出动态链接失败,虚拟机错误

Exception类:有java应用程序抛出和处理的非严重错误,如所文件找不到…

开源日志记录工具log4j

使用log4j的主要4个步骤:

在项目中加入log4j所使用的JAR文件创建log4j.properties文件编写log4j.properties文件,配置日志信息在程序中使用log4j记录日志信息

编写的文件(可直接使用):

###\u8BBE\u7F6ELogger\u8F93\u51FA\u7EA7\u522B\u548C\u8F93\u51FA\u76EE\u7684\u5730###log4j.rootLogger=debug,stdout,logfile###\u628A\u65E5\u5FD7\u4FE1\u606F\u8F93\u51FA\u5230\u63A7\u5236\u53F0###log4j.appender.stdout=org.qpache.log4j.ConsoleAppenderlog4j.appender.stdout.Target=System.errlog4j.appender.stdout.layout=org.apache.log4j.SimpleLayout###\u628A\u65E5\u5FD7\u4FE1\u606F\u8F93\u51FA\u5230\u6587\u4EF6###log4j.appender.logfile=org.apache.log4j.FileAppenderlog4j.appender.logfile.File=aaa.loglog4j.appender.logfile.layout=org.apache.log4j.PatternLayoutlog4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}%l %F %p %m %n

debug指的是日志记录器(Logger)的输出级别,主要输出级别及含义:

fatal:指出严重的错误事件将会导致应用程序的退出error:指出虽然发生错误事件,但仍然不影响系统的继续运行warn:表明会出现潜在错误的情形info:在粗细度级别上指明消息,强调应用程序的运行过程debug:指出细粒度信息事件,对调试应用程序的运行有帮助

转换模式

%d:用来设置输出日志的日期和时间 如(yyyy-MM-dd HH:mm:ss)%m:用来输出代码中的指定的消息%n:用来输出一个回车换行符%l:用来输出日志事件的发生位置%p:用来输出优先级%F:用来输出文件名%M:用来输出方法名

第六章:集合框架

java集合框架共有两大类接口:Collection 和 Map.其中,Collection又有两个子接口:List 和 Set 所以经常说:java集合框架共有三大类接口:List, Set和Map

它们的共同点:都是集合接口,可以用来储存多个对象。区别如下:

Collection 接口存储一组不唯一(允许重复),无序的对象Set接口继承Collection接口,存储一组唯一(不允许重复),无序的对象List接口继承Collection接口,存储一组不唯一(允许重复),有序的对象Map接口存储一组成对的键-值对象,提供key(键) 到 value(值)的映射,Map中的key不允许有序,不允许重复,value同样不要求有序,但允许重复Iterator接口是负责定义访问和遍历元素的接口

List接口

ArrayList集合类

List接口中定义的各种常用方法

方法名称 说明

boolean add(object o) 添加元素

int size() 返回列表中的元素个数

object get(int index) 返回指定索引位置的元素(如果取出的是object类型,使用时需要类型转换)

boolean contains(object o) 判断列表中是否存在指定元素

boolean remove(object o) 从列表中删除元素(也可以用下标删除)

LinkedList集合类

方法名称 说明

void addFirst(object o) 在列表的首部添加元素

void addLast(object o) 在列表的尾部添加元素

object getFirst() 返回列表中的第一个元素

object getLast() 返回列表中的最后一个元素

object removeFirst() 删除并返回列表中的第一个元素

object removeLast() 删除并返回列表中的最后一个元素

Map接口

HashMap集合类

Map的常用方法

方法名称 说明

object put(object value) 以键值对的方式进行储存,注意:键必须是唯一,值可以重复

object get(object key) 根据键返回相联的值,若不存在指定的键,则返回null

object remove(object key) 删除指定的键映射的“键-值对”

int size() 返回元素个数

Set keySet() 返回键的集合

Collection values() 返回值的集合

boolean containskey(object key) 若存在指定的键-值对,则返回true

boolean isEmpty() 若不存在键-值映射关系,则返回true

void clear() 从此映射中移除所有映射关系

迭代器 Iterator

Collection 接口的iterator()方法返回一个Iterator,然后用过 Iterator接口的两个方法即可方便的实现遍历

boolean hasNext();判断是否存在另一个可访问的元素object next();返回要访问的下一个元素

第七章:多线程:

在Java中实现多线程

Thread类及常用方法

Thread类常用方法构造方法 说明

Thread() 分配新的Thread()对象

Thread(Runnable target) 分配新的Thread()对象,taget为run()方法被调用的对象

Thread(Runnable target,String name) 分配新的Thread()对象,taget为run()方法被调用的对象,name为新线程的名称

void run() 执行任务的操作方法

void start() 使该线程开始执行,Java虚拟机调用该线程的run()方法

void sleep(long millis) 在指定的毫秒数内让当前正在执行的线程休眠(暂停执行)

String getName() 返回线程的名称

int getPriority() 返回线程的优先级

void setPriority(int nerPriority) 更改线程的优先级(括号里面直接用 Thread 点出它的值,即可用)

static Thread currentThread() 返回当前正在执行的线程对象的引用

boolean isAlive() 测试线程是否处于活动状态

void join() 等待该线程终止

void interrupt() 中断线程

void yield() 暂停当前正在执行的线程对象,并执行其他线程

主线程

它是产生其他子线程的线程通常它必须最后完成执行,因为它执行各种关闭

继承Thread类创建线程

实现Runnable接口创建线程

线程的五种状态:

即:创建,就绪,运行,阻塞,死亡状态

线程的优先级(1-10)之间

线程的同步:

sychronized是同步的关键字

1.用 同步方法 进行同步

2.用 同步代码块 进行同步(代码块中括号中基本放的是 this 当前类)

第八章:File I/O

操作文件或目录的属性

使用File类操作文件或目录

创建一个File对象的语法:

File file=new File(String pathName);

其中:pathName表示所指向的文件路径名

File类的常用方法

方法名称 说明

boolean exists() 判断文件或目录是否存在

boolean isFile() 判断是否是文件

boolean isDirectory() 判断是否是目录

String getPath() 返回此对象表示的文件的相对路径名

String getAbsolutePath() 返回此对象表示的文件的绝对路径名

boolean delete() 删除此对象指定的文件或目录

boolean createNewFile() 创建名称的空文件,不创建文件夹

long length() 返回文件的长度,单位为字节,若文件不存在,则返回OL

Java的流

流,是指一连串流动的字符,是以先进先出的方式发送和接受数据的通道

流,具有明确的方向性,当向一个流写入数据时,这个流被成为输出流

按照流的流向进行划分,可以分为输入流和输出流

输入流:只能从中读取数据,而不能向其中写入数据

输出流:只能向其中写入数据,而不能从中读取数据

Java的 输出流 主要由 OutputStream 和 Writer 作为基类

输入流 主要由 InputStream 和 Reader 作为基类

字节流操作的最小数据单元为8位的字节,而字符流操作的最小数据单元是16位的字符

字节流 建议用于二进制数据 (字节流:字节输入流 InputStream 基类 字节输出流 OutputStream 基类)

字符流 用于文本 (字符流:字符输入流 Reader 基类 字符输出流 Writer 基类)

这四个基类都是抽象类。

读写文本文件

使用字节流读取文本文件(字节输入流 InputStream 类)

读取数据的常用方法

方法名称 说明

int read() 读取一个字节数据

int read(byte[] b) 将数据读取到字节数组中

int read(byte[] b,int off,int len) 从输入流中读取最多len长度的字节,保存到字节数组b中,保存的位置从off开始

void close() 关闭输入流

int available() 返回输入流读取的估计字节数

无参的 read() 方法从输入流读取一个八位的字节,把它转换为0-255的整数返回

使用字节流写入文本文件(字节输入流 OutputStream 类)

OutputStream类的常用方法

方法名称 说明

void write(int c) 写入一个字节数据

void write(byte[] buf) 写入数组buf的所有字节

void write(bute[] b,int off,int len) 将字节数组中从off位置开始,长度为len的字节数据输出到输出流中

void close() 关闭输出流

使用字符流读取文本文件(字符输入流 Reader 类 Reader类是读取字符流的抽象类)

Reader类常用方法

方法名称 说明

int read() 从输入流中读取单个字符

int read(byte[] c) 从输入流中读取c.leng长度的字符,保存到字符数组c中,返回实际读取的字符数

read(char[] c,int off,int len) 从输入流中读取最多len的长度字符,保存到字符数组c中,保存的位置从off位置开始,返回实际读取的字符长度

void close() 关闭流

字符输入流BufferedReader类

BufferedReader 类是 Reader 类的子类 它与 FileReader 类的区别在于 BufferedReader 类带有缓冲区

readLine() 方法是 BufferedReader 类特有的方法,用来按行读取内容

使用字符流写文本文件(字符输出流 Writer 类)

Writer类常用方法

方法名称 说明

write(String str) 将str字符串里包含的字符输出到指定的输出流中

write(String str,int off,int len) 将str字符串里从off位置开始长度为len的字符输出到输出流中

void close() 关闭输出流

void flush() 刷新输出流

字符输出流 FileWriter 类

FileWriter 类是 Reader 的子类

字符输出流 BufferedWriter 类

BufferedWriter 是 Writer 类的子类

BufferedWriter 类中 newLine() 方法是换行符

二进制文件的读写

读写二进制文件常用的类有 DataInputStream 和 DataOutputStream

使用字节流类 DataInputStream 读二进制文件

DataInputStream 类是 FileInputStream 的子类

使用字节流类 DataOutputStream 写二进制文件

DataOutputStream 类是 FileOutputStream 的子类

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。