使用java实现面向对象编程_使用java实现面向对象编程

第一章 对象和封装

1.现实是面向对象的,面向对象是采用“现实模拟”的方法设计和开发程序。

2.面向对象设计的过程就是抽象的过程

3.面向对象的设计过程:发现类,发现类的属性,发现类的方法

4.创建类和对象:类属性和行为组成,属性和行为又称为类的成员变量.

5.类和对象是面向对象的核心概念,类是抽象的,对象是具体的

6.类名首字母大写,属性名和方法名采用驼峰命名法,常量名所有字母大写

7.构造方法及重载:

构造方法:构造方法和类名相同,没有返回值类型,作用为对象初始化;

方法重载:类中包含两个及以上的方法,方法名相同,参数列表不同(个数或类型不同),依据:必须在同一个类中,方法名相同,参数列表不同,与方法值和返回类型无关

8.static修饰符:static修饰符属于这个类中,类中对象共用static变量,static修饰的属性和方法称为类属性和类方法,非static修饰称为实例属性和实例方法

9.加载类时,先完成静态变量内存分配,在执行静态块;类属性和类方法通过类名、对象名访问,示例属性和方法只能通过对象名访问;类方法只能访问类属性和其他类方法

10.静态方法不能使用this和super关键字

11.方法里不能定义static变量

12.构造方法没有返回值,有返回值的是与构造方法同名的方法

13.* 封装:将类的状态信息隐藏在类内部,不允许外部程序直接访问,通过该类提供的方法实现对隐藏信息的操作和访问。

步骤:属性私有化,get赋值和set取值

好处:隐藏类的实现细节,通过规定方法访问数据,方便存取控制数据,限制不合理操作。

14.封装时的访问修饰符区别:

privte:定义的类中访问,类可见性

默认:成员变量和方法同在包中访问,包可见性

protection:同包的类中访问,同项目不同包的子类访问

public:同项目的所有类中访问,项目可见性

15.this关键字:

this调用成员变量:this.name=name;

this调用成员方法:this.show();

this调用重载的构造方法,只能在构造方法中的第一句使用:this(name,sex);

第二章 继承

1.继承使用关键字extends实现:修饰符 子类 extends 父类{}

使用super关键字调用父类方法,Java只支持单继承,每个类只有一个父类

**所有java都间接和直接的继承了Object类,Object是Java的祖先

Object的方法中getClass(),notify().wait()都是final方法只能被子类继承不能被重写。hashCode(),toString(),equals(Object obj)不是final方法,可被重写

2.子类可以访问父类受保护的方法、属性。

子类可以继承父类的:非私有属性和方法,默认权限的属性和方法须在同一包中;无法继承父类的构造方法

访问修饰符权限: 本类 同包 子类 其他

private + - - -

默认 + + - -

protected + + + -

public + + + +

**3.重写:如果在父类无法满足子类的需求,可以在子类中对重名方法进行重写(在同一个类中方法名相同,参数列表相同,返回值类型相同或是起子类,访问修饰符不能严与父类)

重载:在有父子类关系中方法名相同,参数列表不同,与返回值类型,访问修饰符无关

super.方法名表示对当前对象的直接父类的默认引用,super在构造方法中须在第一行,在普通方法中位置不定

super.属性名、super.方法名()、super.(构造方法)。

4.继承条件下构造方法的规则:

若子类无this或super显式调用父类有参方法则系统默认调用父类的无参方法

若子类显式调用了有参方法,则不执行父类的无参工作方法;

在构造方法中出现super或是this只能在第一行,同一构造方法中不可能同时出现this或是super语句,类方法中不允许出现this和super关键字,普通方法this和super可以共存

5.抽象类:使用abstract关键字来实现,抽象类没有方法体,不能通过new实例化。

abstract能用来修饰类和方法,不能用于修饰属性和构造方法,抽象类中可以有构造方法,可被本类的其他构造方法调用也可被非私有的子类构造方法使用

abstract不能和private、static修饰同一方法;

abstract不能和final修饰同一方法或类。

6.final修饰符:final修饰的类不能被继承,修饰的方法不能被子类重写,修饰的变量将变成常量只能赋值一次。

7.final和abstract功能相反的关键字:

abstract能修饰类和方法,不能修饰属性和构造方法;

final能修饰类,方法和属性,不能修饰构造方法。

第三章 多态

1.多态:具有表现多种形态的能力的特征;同一个引用类型,使用不同的实例执行不同的操作

条件:继承、重写、父类引用对象指向子类对象(子类到父类的转换)

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

父类引用指向子类对象称为向上转型

父类引用变量调用的方法是子类覆盖或继承的方法,不是父类的方法

父类引用变量无法调用子类特有方法

3.父类到父子类的转换(向下转型)规则:

使用instanceof运算符进行强转;对象 instanceof 类或接口

4.过多态可以减少类中的代码量,提高代码的可扩展性和可维护性,继承时多态的基础。

5.使用父类作为方法形参和使用返回值类型是使用多态的常用方式

第四章 接口

1.接口是一套规范,为了实现多继承,接口中属性都是常量,方法都是抽象的,不能被实例化,接口的实现类必须实现类接口的全部方法,接口是一种能力,也表示一种约定。

语法:[修饰符] interface 接口名 extends 父接口1, 父接口2

类实现接口语法:class 类名 extends 父类名 implempents 接口1,接口2

2.接口比抽象类更好的特性:可以多继承,设计和实现分离,更自然的使用多态,跟容易搭建框架、更换实现方式。

第五章 异常

1.程序的异常处理机制:保证程序继续运行,处理异常。

2.try-catch-finally:在try语句块中可能发现异常若没有catch声明程序会立即退出,catch语句中当程序出现异常时才会执行,finally语句中的代码都会执行。

3.catch常用的方法:void printStackTrace()用于输出异常的堆栈信息

String geManssage()返回异常信息描述字符串

4.常见的异常类型:

Exception 异常层次结构的根类

ArithmeticException算术错误情形,如以0为除数

ArrayIndexOutOfboundsException数组下标越界

NullPointerException空指针异常

ClassNotFoundException找不到所须加载的类

InputmismatchException输入的数据类型不匹配

IllegalArgumentException方法接收非法参数

classCastException对象强制类型转换出错

NumberFormatException数字格式转换失败

5.多重catch去语句:catch排列的顺序必须是子类到父类,最后一个一个都是Exception类

6.声明异常--throws:方法内抛出异常;必须参数列表后,不能单独使用;后面跟异常类,可以接多个异常类

7.抛出异常-throw:在程序中抛出异常;位于方法体内可单独使用;抛出一个异常。

8.即使在try,catch语句中存在return,finally语句也会执行,finaly唯一不被执行的情况为System.Exit(0);

8.异常的父类:

Object

throwable

ErrorException

AWTErrorSQLExceptionRunTimeException

ThreadDeath ClassNotFoundException|

ArithmeticException

NullPointerException

NumberFormatException

第六章 集合框架

集合的框架:为表示和操作集合而规定的统一标准体系结构,包含三大块内容:对外接口,接口的实现,集合的运算;

list 继承 Conllection接口 元素可以重复,有序(以插入的顺序)

set 继承 Conllection接口 元素不可以重复,无序

Map 接口存储一组成对的 键 -值 对象,key-value ,map中的key不要求有序,不允许重复,value可以重复

ArrayList实现是list的子类,底层是数组结构,存储方式和遍历和数组相同,都是在内存中分配连续被空间

遍历和随机访问元素的效率比较高。

LinkedList采用链表存储方式,插入和删除元素时比较高

集合 list

add(E e)方法添加元素

size()方法获取元素的个数

get(index)获取某个下标的元素

remove(index)删除该下标的元素并返回该对象

remove(Object)删除该对象,删除成功返回true,否则返回false

contains(Object)判断是否包含对象 ,包含返回true,否则返回false

LinkedList 特有的方法

removeLast(); 删除后一个元素并返回

removeFirst();删除第一个元素并返回

getFirst(); 获取第一个元素

getLast(); 获取最后一个

addFirst(); 从首部添加

addLast从尾部添加

map

maps.get("cn");//根据key获取value

maps.remove("jan"));//根据key删除元素,并返回

containsKey("rudfs"));//是否包含某个key

maps.keySet()获取所有的key

maps.values()获取所有的vlaue

Hashtable和Hashmap的异同:

同:原理相同,功能相同,大多情况下可互用

异:Hashtable继承自Dictionary,线程是安全的,key和valu不允许null值;HashMap实现了Map接口,重速度,轻安全, key 和 value不可以为null

Iterator迭代器:专门实现集合的遍历,提供遍历集合的统一接口。

Collection接口的iterator()方法返回一个iterator,通过iterator的两个方法实现遍历;

boolean hasNext():判断是否存在另一个可访问的元素;

Object next():返回要访问的下一个元素。

数组和集合的区别:

数组用于存储数据类型和对象;长度固定;定义时须指定数组元素类型;length获取数组长度,无法直接获取;分配连续空间;使用Arrays泪?说句处理。

集合用于存储对象;长度可变;默认所有的元素都是Object;size()方法直接获取;有多种实现方式和不同场合;以接口和类的形式存在,具有封装,继承,多态特性,调用简单方便,提高编写效率;使用Collection类对数据了进行处理

泛型集合

第七章 多线程

进程:是程序的一次动态执行过程;

特点:进程是程序运行的基本单位;每个进程都有自己独立的内存空间、资源;每个进程的内部数据和状态都是完全独立的

线程:进程执行运算的基本单位,每一个进程至少都有一个主线程作为程序的入口;

多线程:同时运行多个不同线程进行不同的工作,但是cpu在同一时刻,只能执行该进程的一个线程

好处:充分利用CPU资源;简化编程模型;带来良好的用户体验。

在java中实现多线程:

Theared类及常用方法:java提供了java.lang.Thread类支持多线程编程;

Thared(Runnable target[run()方法被调用的对象],Srring name[新线程的名称]) 分配新的Thread对象

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

void start() 是线程开始执行

void sleep() 指定毫秒数内让线程休眠;需处理InterruptedException()异常

String getName()返回线程的名称

int getPrority()返回线程的执行优先级,相对的

setprority(int newPrority() 改线程的优先级

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

boolean isAlive()测试当前线程是否存在活动

void join()强制某一线程执行,等待线程停止;需处理InterruptedException()异常

void interrupt() 中断线程

void yield() 放弃本次执行机会,继续和其他线程抢资源,只是提供一种可能,不一定实现礼让

主线程:

main()方法是主线程的入口;产生其它线程的线程(其它线程的父类),通常它最后完成执行

使用线程的步骤:定义一个线程;创建线程对象;启动线程;关闭线程。

多种方法:

1)继承Thread类创建线程:定义类继承Thread类;重写run()方法实现数据输出;创建线程对象,调用start()方法启动线程。

注:已启动的线程不能再次调用start()方法,否则会抛出IllegaThreadStateException异常;

2)实现Runnable接口创建线程:定义myRuannable类实现Runnable接口并实现接口的run()方法,在run方法中实现输出数据;创建myRuannable类的对象myRuannable;创建myThread对象将myRuannable作为参数传进去;调用myThread对象的start()方法启动线程

Runnable接口定义在Java.lang中;

|-阻塞-|

线程的状态:创建(start())-就绪-运行-死亡

创建:新的线程对象处于创建

就绪:start开始启动线程进入就绪

运行:获得CPU资源时即转入运行状态

阻塞:某种特殊原因线程暂停执行

暂停条件:线程优先级较低,获取cpu的机会小;使用sleep()方法使程序暂时休眠;使用wait()方法使程序等待;调用yield()方法使线程显示让出cpu控制权;由于线程等待一个文件I/O事件被阻塞。

死亡:程序执行完毕

线程调度是按照特定机制为多个线程分配CPU使用权

线程的同步:多线程共享数据引发不安全问题,需要线程同步来解决;关键字synchronized实现

1)同步方法:synchronized修饰类的实例方法,锁定当前对象、当前类,可控制当前所有实例的访问

2)同步代码块:synchronized(syncObject/this)

第八章 File I/O

1.java中利用流对一些文件进行操作;

2.file类的常用方法:

boolean exist:判断文件,目录是否存在

b isFile:判断是否是文件

b isDirectory:判断是否是目录

String getPath:返回对象的路径名

S getAbsolute:返回绝对路径名

S getName: 返回指定文件名

b delete:文件是否删除

b creatNewFile:创建空文件,创建文件夹的方法mkdir

long length:返回文件长度

API:应用程序编程接口

3.Java的流:一串流动的字符,以先进先出的方式发送接收数据,具有明确的方向性,数据源分为目标数据源(输出)和源数据源(输入);

按照流向分为:输入(读取数据)和输出流(写入数据),java中输入以inputStream 和reader为基类,输出以outputStream和writer为基类

按照操作的数据单元不同分为:字符流 (视频、音频、图片)和字节流(文本)

按照数据处理单元分:字节流-字节输入流inputStream类

\字节输出流outputStream类

字符流-字符输入流reader类

\字符输出流writer类

4.读写文本文件

1)使用字节读文件:

a字节输入流inputStream类:

b字节输入流FileInputStream类

c使用FileInputStream类读取文件

2)使用字节写文件:

a字节输出流outputStream类

b字节输出流FileOutputStream类

c使用FileOutputStream类写文本文件

3)使用字符读文件:

a字符输入流reader类

b字符输入流FileReader类

c使用FileReader读取文件

d字符输入流BufferReader类

e使用FileReader和BufferReader读取文件

4)使用字符写文件:

a字符输出流writer类

b字符输出流FileWriter类

d使用FileWriter写文本文件

c字符输出流BufferedWriter类

e使用FileWriter和BufferedWriter写文本文件

5.二进制文件的读写

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

步骤:引入相关的类;构造数据输入流对象;利用输入流的方法读取二进制文件的数据;关闭数据流

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
不好意思,本人发的"北大青鸟ACCP 6.0 软件开发初级程序员:c#语言和数据库技术基础"和 "北大青鸟ACCP 6.0 软件开发初级程序员:使用C#语言开发数据库应用系统" 文件搞反了,如果一起下载不影响的。呵呵 ACCP(Aptech Certified Computer Professional)是印度最早从事IT职业教育的Aptech计算机教育公司推出的培养软件程序设计人员的课程体系,由北大青鸟集团于2000年引入中国。该课程体系通过结合先进的多模式教学法,使学习者在掌握理论知识与工具的同时,具备良好的自我学习能力和个人素质,成为符合21世纪企业要求的IT人才。   ACCP 6.0是北大青鸟APTECH推出的最新软件工程师职业教育课程,由中印两国软件技术专家联合研发完成。作为一款面向大众的求职系列教育产品,ACCP6.0的课程开发采用了全球同步机制,推陈出新,引领未来IT技术发展潮流,继续保持了北大青鸟APTECH ACCP课程体系的国际同步水平以及在国内IT职业教育领域的领导地位。   ACCP6.0的课程相对于ACCP5.0增加了DB2关系型数据库系统,DB2具有很好的网络支持能力,每个子系统可以连接十几万个分布式用户,可同时激活上千个活动线程,对大型分布式应用系统尤为适用。DB2具有较好的可伸缩性,可支持从大型机到单用户环境,应用于OS/2、Windows等平台下。 09年6月14日,IBM全球同步发布了一款具有划时代意义的数据库产品——DB2 9.5,而这款新品最大特点即是率先实现了可扩展标记语言(XML)和关系数据间的无缝交互,而无需考虑数据的格式、平台或位置。   ACCP6.0课程体系特色   1.分阶段训练:引领学员入门,加大训练量,训练学员程序逻辑和写代码的能力,夯实学员的基础;   2.分术业专攻:基础和思想决定了一个人含金量。要想在软件行业增强发展力,必须着重基础与理论知识。   3.分维度培养:从业务理解、经验积累、规范性、质量控制、团队意识和软件生命周期六个方面进行训练。   4.分层次深入:主要分为初次使用、理解加深和灵活应用这三个层次。学员理解为更为透彻,掌握更为牢固。   逆向设计确保就业——专业分析5362条招聘信息   ——深入访谈386家用人企业   ——定制2份行业人才需求标准简历   ——针对286项关键技能点逐一突破   ——斥资2000万,组织186名中美印专家投入研发   高强训练编程能力——1年半完成52000行代码编写   ——相当于1名程序员2年代码编写量   项目驱动案例贯穿——提供CRM、ERP中型项目实战训练   ——演练26项全真项目案例,贯穿8大行业   打造COT六脉神剑 ——训练目标清晰 训练手段多样   ——渗透学习过程 考核方法明确   ——接轨职场礼仪 积累职场经验
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值