面向对象的三大特征: 封装、继承、 多态
一、面向对象高级: 修饰符:
static 1. 修饰变量(属性);2修饰方法;3修饰代码块。
覆盖overriding 不适用于静态方法。
当static 修饰代码块是(代码块要在类的任何一个方法之外),那么这个代码块被装载进虚拟机生成对象的时候可被装载一次,以后再也不执行了。
一般静态代码块用来初始化静态成员。
static 通常用于Singleton 模式开发。
final 可以修饰类、属性、方法。
当用final 修饰类的时候,此类不可以被继承。即final 类没有子类。
当用final修饰一个属性(变量)的时候,此时的属性成为常量。
public static final 对常量进行标示。
如果一个方法前有修饰符为 private or static ,则系统会自动在前面加上final。 即private和static方法默认均为final 方法。
abstract (抽象)可以修饰类、方法。
1. 如果一个类设置为 abstract, 则此类必须被继承,此类不可生成对象。
abstract 虽然不能生成对象,但可以声明,作为编译时的类型,但不能作为运行时类型。
Final 和 abstract 永远不会同时出现。
二、java 的核心概念: 接口(interface)
接口与类属于同一层次,实际上,接口是一种特殊的抽象类。
public interface 公开接口
与类相似,一个文件只能有一个public接口,且与文件名相同。
在一个文件中不可以同时定义一个public接口和一个public 类。
一个接口中,所有的方法为 public abstract; 所有属性 public static final 常量
一个类实现一个接口格式:
class A implements IA {
}
一个了实现接口,相当于它继承一个抽象类。
类必须实现接口中的方法,否则其为 抽象类。
注意:
1. 一个类除继承另外一个类,还可以实现接口;
2.一个类可以实现多个接口,中间用“,”隔开
3.接口和接口之间可以定义继承关系,并且接口之间允许实现多继承。
interface IC extends IA, IB{}
Objec 类,是java体系中所有类的父类。
(1)、finalize() 当一个对象被垃圾回收的时候调用的方法。
(2)、toString() 利用字符串表表示对象。
(3)、 equal()
Exception(例外/异常)
java 将所有的错误封装成一个对象,其根父类为Throwable
的子类 为 : Error 和 Exception
Exception 的子类: Runtime exception(未检查异常)、非Runtime Exceptio你(已检查异常)
定义一个例外类: 继承 exception or RuntimeException
三、 集合 Collection
java.util.*
集合框架接口的分类: Collection interface、 map interfact
collection (List 接口, Set 接口——〉SortedSet 接口)
Map 接口——〉SortedMap 接口
java 中所有与集合有关的实现类都是这六个接口的实现类。
1. Collection 接口: 集合中每一个元素为一个对象,这个接口将这些对象组织在一起,形成一维结构。
2. List 接口: 元素按一定的顺序组织,List 接口中的数据可以重复。
ArrayList :动态可变数据,数据查询速度快,增删速度慢
LinkedList: 动态可变数据,查询效率低,增删快。 功能用于 堆栈 和队列
Vector : 与ArrayList 相似,但 Vector 是重量级组件,使用消耗资源较多。
结论: 在考虑并发的情况下用Vector (保证线程安全)
不并发时用ArrayList(不保证线程安全)
3. Set 接口: 元素无序,且不可重复。
Set——HashSet 实现类
遍历一个Set 的方法只有一个: 迭代器(interator)
HashSet : 元素无序,且不重复
HashSet 底层用数组;
结论: 如将自定义类用hashSet来添加对象,一定要覆盖hashCode 和equals();
覆盖原则:保证两个对象的hashcode 返回的相同的数,而且equals() 返回true
4.SortedSet : 会按照数字将元素排序, 为“可排序集合”。
SortedSet 的实现类 TreeSet: 作用自动为添加到TreeSet中的元素排序。
TreeSet不需要实现HashCode(), equals()
只要实现compareable 和 compareTo() 即可实现过滤功能。
4. Map :Key-value 是用一个不可重复的key集合对应可以重复的value集合。(eg:字典)
具体细节内容见(java 学习笔记[必看经典])
四、线程
线程有两种实现方式
1. 继承 Thread 类
class MyThread extends Thread{
public void run() {
}
}
public class TestThread {
main() {
Thread t = new MyThread();
t.start();
}
}
2. 实现 Runnable 接口
Class MyThread implement Runnable {
public void run() {
Runnable r = new MyThread();
Thread t = new Thread();
t.start();
}
}
实现同步 synchronized 同步
五、I/O 流
1. File 类,(java.io.*)
File f = new File("11.txt"); // 创建一个名为 11.txt 的文件对象
f.CreateNewFile(); // 真正地创建文件
f.CreateMkdir(); 创建目录
f.delete(); // 删除文件
f.deleteOnExit(); // 在进程退出的时候删除文件,这样的操作通常用在临时文件的删除。
List() : 显示文件名(相对路径)
ListFiles ():返回Files类型数组, 可以用getName() 来访问到文件名。
使用 isDirectory() 和 isFile() 来判断究竟是文件还是目录。
2. 使用I/O流来访问文件file 的内容。
Jvm 与外界通过数据通道进行数据交换。
分类:
按流分为 输入流和输出流
按传输单位分 字节流和字符流
还可以分为: 节点流和过滤流
节点流: 负责数据源和程序之间建立连接
过滤流: 用于给节点增加功能。过滤流的构造方式是以其他流位参数构造(这样的设计模式称为装饰模式)
字节输入流: io 包中的InputStream 为所有字节输入流的父类。
Int read(); 读入一个字节(每次一个);
read(byte[]) 返回值可以表示有效数 ,返回值-1, 表示结束。
字节流输出流: io包中的 OutPutStream 为所有字节输出流的父类。
write 和 read 对应。
/**
* get stream from file for db
* @param fileName path of file
* @return byte[] 's info
*/
public static byte[] getStreamForDB(String fileName) {
File file = new File(fileName);
int fileLength = (int) file.length();
byte[] bufferArray = new byte[fileLength];
FileInputStream inputStream;
try {
inputStream = new FileInputStream(file);
try {
inputStream.read(bufferArray, 0, bufferArray.length);
inputStream.close();
} catch (IOException exception) {
log.debug("I/O Exception when reading or closeing: "
+ exception.toString());
throw new BusinessException(exception.toString());
}
} catch (FileNotFoundException exception) {
log.debug("File not find: " + exception.toString());
throw new BusinessException(exception.toString());
}
return bufferArray;
}
/**
* get File from db
* @param fileName path of file
* @param stream in db
* @return File type's file
*/
public static File getFileFromDB(byte[] bufferArray, String fileName) {
File file = new File(fileName);
FileOutputStream outputStream;
try {
outputStream = new FileOutputStream(file);
outputStream.write(bufferArray, 0, bufferArray.length);
outputStream.close();
} catch (Exception e) {
throw new BusinessException(e.toString());
}
return file;
}
六、网络编程
略。
相关推荐
### Java初级OOP基础知识详解 #### 一、面向对象与面向过程的区别 在软件开发领域,面向对象(Object-Oriented Programming, OOP)和面向过程(Procedure-Oriented Programming, POP)是两种不同的编程思想。 - *...
本文将从封装、继承、多态以及接口四个方面来总结Java中的OOP基础知识。 #### 封装(Encapsulation) 封装是OOP的一个核心概念,其主要目的是隐藏对象的内部状态和实现细节,并通过定义一组公共的方法来访问和修改...
面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它将程序设计中的实体(如数据和操作)封装在一起,形成独立的对象。...这是一个很好的实践项目,对于学习和巩固OOP基础知识非常有帮助。
本教程将深入探讨Java中的OOP基础知识,并与C++进行对比。 1. **类与对象** - **类**:在Java中,类是创建对象的蓝图。它定义了对象的属性(数据成员)和行为(方法)。例如,你可以创建一个名为"Person"的类,...
### OOP基础知识 #### 1. 面向对象的概念 面向对象编程(Object-Oriented Programming, OOP)是一种编程范式,它使用“对象”来设计软件。每个对象都是一个类的实例,具有状态(属性)和行为(方法)。OOP的核心理念...
下面将详细讲解JavaScript的OOP基础知识以及如何与jQuery相结合。 1. **JavaScript中的对象和原型** JavaScript是一门基于原型的语言,它的对象可以直接创建,而无需预先定义类。对象可以通过字面量语法或构造...
这是一个以OOP方式编写的CLI(命令行界面)地址簿应用程序。 这是一个Java示例应用程序,旨在供学生在使用Java作为主要编程语言的同时学习软件工程。 它提供了一个编写合理的代码示例,该示例比学生通常在数据结构...
它由一个演示文稿组成,涵盖了OOP基础知识和后续工具开发所需的生物学背景。 code_chunks和python_oop.ipynb引入了具有OOP基础知识的相同python代码段(取决于使用/使用的格式(终端,IDE,笔记本))。 通过遍历...
在Android架构设计中,面向对象编程(Object-Oriented Programming, OOP)是核心基础,尤其是在构建可维护、可扩展的软件系统时。本主题"android架构-复习基本OOP知识d"旨在帮助开发者深入理解并熟练运用OOP原则,...
标题中的"oopxm(1).zip"看起来是一...由于我们无法直接查看压缩文件的内容,以上都是基于OOP基础知识的解释。如果你希望了解更具体的信息,比如某个特定编程语言的OOP实现或某个设计模式的细节,需要提供更多的上下文。
这可能涵盖了对OOP基础知识的理解,如类与对象、封装、继承、多态等概念,以及如何在实际项目中运用这些概念。 Python在机器学习中的应用广泛,因为其丰富的库支持,如NumPy用于数值计算,Pandas用于数据处理,...
本文档总结javaOOP所有关键知识,包括java基础知识、面向对象、常用API、多线程、集合、IO、泛型、枚举、反射、注解等概念性知识。
本资料"面向对象的编程基本语法ppt共91页.pdf.zip"显然是一个关于OOP基础知识的详细教程,可能包含了91页的PPT内容,旨在帮助学习者理解和掌握面向对象编程的基本概念、原则和技巧。 在OOP中,有几个关键概念是必须...
- **办公室时间**:参加David的办公室时间,了解OOP基础知识。 - **书籍与文章**:市面上有很多关于OOP的书籍和文章。 - **在线资源**:访问Apple开发者网站...
总之,扎实的OOP基础对于成为一名合格的Android架构师至关重要。通过不断的学习和实践,开发者可以构建出更加健壮、易于维护的Android应用,从而在敏捷开发的迭代过程中游刃有余。通过观看"A01_b_复习基本OOP知识....
其次,《面向对象程序设计基础》系列文档(1.doc和2.doc)提供了对OOP基础知识的详尽讲解。这些文档可能包含了类与对象的概念、封装的原理、继承的机制、多态的实现,以及虚函数和模板等高级特性。学习者可以通过...
### Java OOP编程思想学习之我见 在深入探讨Java面向对象编程(OOP)之前,我们首先要理解OOP的基本概念及其与过程式编程的区别。Java作为一种强大的编程语言,其设计初衷之一就是全面拥抱OOP理念,这不仅体现在...
通过实现复数的基本数学运算和获取复数信息的方法,不仅巩固了对OOP基础知识的应用能力,还提高了代码的健壮性和安全性。此外,这种实践也有助于培养良好的编程习惯和思维模式,为后续更复杂的项目开发打下坚实的...
本压缩包文件旨在帮助初学者理解并掌握C#的基础知识,包括OOP(面向对象编程)概念和继承等核心概念。 一、C#基础知识 1. 变量与数据类型:C#中的数据类型分为值类型和引用类型。值类型包括整型、浮点型、字符型和...
面向对象程序设计(Object-Oriented Programming,简称OOP)是一种广泛应用的编程范式,它...通过解答这些题目,考生不仅可以检验自己对OOP理论知识的掌握程度,还能提升实际编程能力,为未来的职业生涯打下坚实基础。