面向对象的三大特征: 封装、继承、 多态
一、面向对象高级: 修饰符:
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;
}
六、网络编程
略。
相关推荐
C#OOP课程总结,是学C#oop基础知识的有力文档。
这是一个以OOP方式编写的CLI(命令行界面)地址簿应用程序。 这是一个Java示例应用程序,旨在供学生在使用Java作为主要编程语言的同时学习软件工程。 它提供了一个编写合理的代码示例,该示例比学生通常在数据结构...
它由一个演示文稿组成,涵盖了OOP基础知识和后续工具开发所需的生物学背景。 code_chunks和python_oop.ipynb引入了具有OOP基础知识的相同python代码段(取决于使用/使用的格式(终端,IDE,笔记本))。 通过遍历...
本文档总结javaOOP所有关键知识,包括java基础知识、面向对象、常用API、多线程、集合、IO、泛型、枚举、反射、注解等概念性知识。
Java OOP编程思想学习之我见
里面包含了C#的一些基础知识,有利于初学者对C#这一块的知识有一个很好的了解。
AS3 语言100个基础知识点 包括oop基础 概念 as3一些普通技巧
windows第六章深入学习c#oop,介绍了面向对象的基础知识,希望对于初学者能有所帮助。
Java-SoftUni Java基础知识,Java基础知识,Java Advanced,带有Java的OOP的作业和考试准备
笔记: 除“ OOP基础知识”部分以外的所有代码均不可执行。 我使用Python进行代码演示。 我尝试编写无错误的代码,这就是为什么在许多类和函数中我只使用None或pass 作为练习,我将编码部分保留为Facebook的“ ...
SoftUni-CSharp C#基础知识,C#基础知识,C#高级,C#OOP,C#数据库基础(MS SQL Server),C#高级(实体框架核心),C#Web基础,C#Web高级(ASP.NET),JS高级,JS应用程序
涵盖了javaoop的知识点,包括继承,多太,封装,抽象类,接口,集合,线程等基础知识
.NET开发人员路线图到2021年成为Full Stack .net开发人员的路线图在下面,您可以...路线图资源了解先决条件OOP基础知识SOLID原则桌面应用程序框架 Windows表格移动应用/游戏开发Visual Studio中的跨平台移动开发Xamarin
Java核心技术 卷Ⅰ:基础知识 【中文】 第1章概述Java与其他程序设计语言不同的性能。解释这种语言的设计初衷,以及在哪些方 面达到了预期的效果。然后,简要叙述Java诞生和发展的历史。 第2章详细地论述如何下载和...
源自github仓库https://github.com/CyC2018/Interview-Notebook,整理和打印教程内容为PDF文件可直接离线阅读。主要内容包括:Java、Git、OOP面向对象、Linux和操作...非常适合面试前拿来刷一遍,牢固掌握基础知识。
Python中的OOP 这条基础知识学习面向对象的编程 查看档案 对于任何人:)
记住JavaBasics3:Java基础知识系列的第三集,涵盖了类和对象(OOP)
Java-OOP-高级我在JavaAdvancedOOP @SoftUni课程上完成的所有任务-这是模块Java基础知识的一部分
车辆展示厅我已经使用了简单的c ++ oop基础知识来进行车展室管理。在运动型车辆的情况下,我使用了涡轮增压作为布尔变量。当显示列表时,普通,运动和重型车辆分别显示。
最少的基础知识与功能强大的装饰器相结合。 objct.extend() objct.isObjct() objct.isArray() objct.e() objct.e.extend() objct.e.decorator() 装饰工 深度对象 objct.e.modify 执照 关于 ...