JAVASE重难点之OOP&容器

javaSE 重难点掌握

一、面向对象OOP

     1、面向对象   思想

打架:
面向过程: 
面向对象: 打手(对象:封装了内部细节--》 数据, 功能)
能够打架--》 类
张三      --》  对象

三大特性: 封装、继承、多态
封装:封装了内部细节,保护自身数据的安全
继承:在原有的基础之上进行延续, 扩展
多态:子类对象以父类身份出现, 最终以子类自己的方法来执行

2、语法:

            2.1、封装:权限修饰符   
修饰类:  public-》任何地方都能使用
 default(不写) --》 只能在本包下使用
修饰成员:
public : 所有
default : 本包
protected : 所有子类
private : 本类自己

  2.2、继承    extends
类与类:继承  extends 单继承
接口与接口:继承  extends   多继承
子类继承父类以后自动拥有了父类的所有内容(除了构造器)

  2.3、多态   : 继承、重写、父类引用指向子类对象  (子类新增方法对父类不可见)
                   做题思路:编译看类型,运行看对象    作用:提高代码的重用性 

苹果是苹果-----》子类是子类
苹果是水果-----》子类是父类(子类继承了父类的所有 包括私有属性 )
水果不是苹果---》父类对子类新增方法不可见
苹果不是香蕉---》
             多态之---做题四大原则
                1>、继承链,自己没有找父亲
                2>、编译看类型+正确方法表  运行看结果
                3>、就近最优原则:自己没有找父亲
                4>、发生多态,基类

3、class 类名{
// 属性类型   属性名称
int a;

// 方法  -》  返回值类型  方法名(参数类型 参数名称){}
void|Object fun(int a){
}
}


3.1 重写:按需重写(当父类方法不能满足子类的需求的时候, 子类自己重写父类的方法)
3.2 抽象类:实现了部分功能的类, 里边可能包含抽象方法  abstract
抽象类中一定有抽象方法?  不一定
抽象方法一定在抽象类当中?对   有抽象方法的类一定是抽象类? 是的

3.3 接口:  特殊的抽象, 只有抽象方法
子类在实现接口或者继承抽象类时, 必须重写其中的所有抽象方法, 
         只要在继承链上有任何一个地方实现了抽象方法, 后期就可以不用再次实现了
接口和抽象类不能实例化对象

       3.4  block
          运行顺序:静态代码块---->main方法---->构造代码块---->构造器  
         代码块:位置---》  类中方法外       
                      格式---》{       }
     
         构造方法:   修饰权限 方法名(){


                             }


Constructor 构造方法
1、名称与类名一样
2、没有返回类型
3、外部不能直接调用  都会和new 一起由系统调用
4、没有显示提供任何构造方法时, 系统会提供一个默认的构造方法
5、构造方法不能被static、final修饰

     Setter   和  Getter
取名必须规范
set+属性名首字母大写、 get+属性名首字母大写
boolean类型
is+属性名首字母大写 、 get+属性名首字母大写

 4、常见关键字:

this: 当前对象
1、区分局部变量和成员属性,避免就近原则
2、在本类中调用本类的方法
3、调用构造器  (只能在第一行)
4、非静态方法中, 作为隐士参数传入

super: 父类对象
1、调用父类构造器(只能在第一行)
2、调用父类的方法、属性(作区分)

class:  新建类的关键

static: 方法、属性: 表示共享和跟随类的存在而存在;
final:最终的
类: 该类不能被继承
方法:该方法不能被重写
属性:常量
局部变量: 常量
void: 没有返回值   (返回值类型为void的方法中, 
                               可以有return语句, 但是return 后面不能带数据)
                  一个方法的返回值类型不是void, 方法体中必须有return 语句, 而且一定需要带上数据
return:  
1)返回数据
2)提前结束方法
return语句后不能有其他语句
abstract: 抽象的
 类
方法

interface: 定义接口的关键字
implements: 实现
extends:继承
break: 跳出循环, 结束本层循环
continue: 跳出循环, 结束本次循环, 继续下一次循环
instanceOf: 判断一个对象是否是一个类或者其父类的实体
synchronized:   同步、加锁

Object obj = new Object();
obj instanceOf Object

 5、 权限修饰符:
public : 所有 (一览无遗)------------》在任何地方 
protected : 所有子类 (子承父业)----》在不同包下
         default : 本包 (家庭和睦)--------------》在同一个包下
private : 本类自己 (占为己有)------------》在同一个类中

常见方法:
toString():  
equals(): 按需比较两个对象是否相等
hashCode(): 默认比较两个对象的hash值是否相等, 按需重写, 容器中去重使用
clone():  克隆出来以后的两个对象不是同一个对象, 但是是两个属性都相同的对象
1、重写clone方法, 扩大权限
2、实现Cloneable 接口

wait():等待,让出资源,放弃排它锁
yield():互相礼让, 公平竞争
notify():唤醒


二、容器 (使用)
 1、 变量:容器可以存储多个数据
变量: 单个数据
Collection  extends Iterable:  
1》、存储多个数据
2》、可以存储不同类型的数据
3?、只能存储引用类型

 2、 增、删、改、查 (遍历)
底层基础决定上层建筑
      2.1  List: 有顺序并且可重复(可以存放相同数据的对象, 还可以将一个对象存放多次)
ArrayList: 数组
LinkedList: 链表

2.2  Set:  无序不可重复(内部通过hashCode和equals进行比较的,根据前面两个方法判断是否是同一个对象 )
HashSet:

2.3  容器的遍历:
2.3.1 Iterable -》 迭代器
Iterator iterator(); 
hasNext();
next();


2.3.2  foreach-》增强for循环
for(类型  临时变量:容器){
临时变量
}

2.3.3  有序的 List可以使用普通for循环

3、 Map<key, value>  -》 存储一对一对的数据
4、 HashMap -> 实现类
增、删、改、查
  4.1 键:无序不可重复的
  4.2 值:无所谓

  4.3 遍历:
4.3.1  根据key来遍历  -》 同时获取 key 和value
keySet() +  get(key)  
遍历key通过每一个key获取对应value
4.3.2  直接获取value值  -》 只能获取value
values()  -》 将所有的value值放入Collection中
通过遍历存有所有value的Collection来获取所有的value
4.3.3   通过Entry来遍历
entrySet() -》 存有所有键值对Set集合
遍历该Set获取单个 Entry对象
getValue()  -》 获取value值

getKey()  -》 key值


                                                                                              wf_1224

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值