java面向对象笔记_java面向对象笔记

javaOOP笔记

第一章:对象和封装

1.面向对象设计的步骤

找名词-->>抽象类和属性

找动词-->>方法

主要关注对程序有用的属性

2.常量和构造函数

final:定义常量

构造函数:与类名重名,没有返回类型

注意:

C#普通方法不能和类名相同

java里普通方法可以和类名相同。

可以用this关键字调用本类的构造函数,

但是必须出现在方法的第一行。

3.static

1.java里面可以通过对象访问static成员,也可以通过类直接访问,C#只能通过类访问static成员。

2.static只能作用与成员变量,不能再方法内部定义。

3.static不能用this调用

4.静态方法不能调用非静态方法,普通方法可以调用静态成员。

5.封装

public:公共的,各个类可用

protected:包内和子类可用

默认:同一包内可用

private:本类可用

第二章:继承的语法

1:继承语法

访问修饰符 SubClass extends SuperClass(){}

2.子类能继承public,protered,默认(同一个包)

子类不能继承private,默认(不在同一个包),构造函数

3.重写:有继承才有重写

方法名一样;

参数必须相同

返回值类型相同或者是父类返回类型的子类

访问修饰符权限只能放大不能缩小

4.abstract和final

abstract修饰类表示抽象类,不能实例化

abstract修饰方法表示抽象方法,非抽象子类必须重写

final修饰类表示不能被继承

final修饰方法表示该方法不能被子类重写

final修饰属性表示常量

第三章:多态

实现多态的条件:

继承多态+重写

多态的运用:

1.父类引用指向子类对象

2.父类类型作为参数

(1)作为方法形参

(2)作为返回值类型

C#里氏替换原则 == java向上转型

向下转型:instanceof == is(c#);

第四章:接口

1.如何定义接口

public interface 接口名();

2.如何实现接口

public class 子类 extends 父类 implements 接口1,接口2....

3.什么是接口

接口表示能力,接口表示规范。

4.接口的特点

(1)接口要满足has - a 的关系.

(2)接口是面向对象最抽象的概念,只能有抽象方法,

不能有构造方法,不能是实例化,要实例化其实现类。

(3)接口中的变量只能是public,static final的静态常量

(4)接口中的方法只能是public abstract的抽象方法

(5)接口可以继承多个接口,类可以实现多个接口。

(6)接口中的方法必须咋非抽象实现类实现

第5章:异常和日志

1.异常:try-catch-finally-thorws-throw

注意:(1)异常执行的顺序

(2)多重catch存在的意义,写多重catch要注意顺序,

子类要写在异常前面

(3)throws和throw:

throws声明异常;

throw抛出异常.

(4)所有异常的父类是Exception,有两种异常;

检查异常,运行时异常

2.log4j的使用

1.引入log4j.jar;

2.创建配置文件:log4j.properties;

3.编写配置

4.使用

配置:

级别:fatal>error>warn>info>debug(调试)

目的地:文件,控制台

输出合适;%d %l(位置) %F() %m%n()

第六章:集合接口

1.接口:

Collection(接口)有两个子接口:List,Set

Map(接口没有子接口)

Collection接口没有任何实现类:

List接口常用的有LinkeList和ArrayList;

LinkedList是链表结构,频繁插入或删除的时候使用

ArrayList在频繁查询的时候使用

Set接口存储无序,唯一的元素,List接口存储有序不唯一的元素

Map存储键值对,其中键的集合类型是Set类型,值得集合是Collection

遍历:

增强for:

Iterator:

Set keys = map.keySet();

Iterator it = keys.iterator();

while(it.hasNext()){

key = it.next();

}

第七章:多线程

1.线程和进程

操作系统管理很多进程,一个进程由很多线程;

2.使用线程的步骤

定义线程(编写类)--->创建线程(new)--->启动线程(start)

3.定义线程的两种方式

(1)extends Thread;

(2)implements Runnable;

4.线程的调度

sleep();睡眠,不会主释放cpu(静态方法)

join();强制运行指定线程;(实例方法)

getName();拿到线程名字

setPriority()设置优先级,只是概率概念,不是确定的

yeild();礼让,会释放一下资源,但是还会去抢

wait();会释放资源

5.线程的同步(锁):synchronized

(1)锁方法

(2)锁代码块

6.线程安全的类:Hashtable , StringBuffer

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值