面向对象随笔

1.封装∶
1)类:封装的是对象的属性和行为
2)方法:封装的是具体的业务逻辑功能实现3)访问控制修饰符:封装的是具体的访问权限
 

继承:

1)作用:代码复用
2)超类:所有派生类所共有的属性和行为
接口:部分派生类所共有的属性和行为派生类:派生类所特有的属性和行为3)单一继承、多接口实现,具有传递性
多态:
1)行为的多态:所有抽象方法都是多态的对象的多态:所有对象都是多态的
2)向上造型、强制类型转换、instanceof       

3)多态的表现形式:
3.1)行为多态,通过方法的重写来实现的    3.2)对象多态,通过向上造型来实现的
 

:
1.1)存储new出来的对象(包括实例变量)  1.2)垃圾:没有任何引用所指向的对象  垃圾回收器(GC)不定时到内存中清扫垃圾,
回收过程是透明的(看不到的),不一定一发现垃圾就立刻回收,通过调用system.gc()建议虚拟机尽快调度GC来回收垃圾
1.3)内存泄漏:不再使用的内存还没有被及时的回收,严重的会导致系统的崩溃
建议:不再使用的内存应及时将引用设置为null
1.4)实例变量的生命周期:
 创建对象时存储在堆中,对象被回收时一并被回收
栈:
2.1)存储正在调用方法中的所有局部变量(包括方法的参数) 

2.2)调用方法时,会在栈中为该方法分配一块对应的栈帧,栈帧中存储方法中的局部变量(包括方法的参数),方法调用结束时,栈帧自动被清除,局部变量一并被清除 

2.3)局部变量的生命周期:
调用方法时存储在栈中,方法调用结束时与栈帧一并被清除
方法区:
3.1)存储.class字节码文件(包括静态变量、方法) 3.2)方法只有一份,通过this来区分具体的调用对象
 

 

多态:
1)意义:
1.1)同一类型的引用,指向不同的对象时,有不同的实现---行为的多态:cut(),step(),getImage()...
1.2)同一个对象,被造型为不同的类型时,有不同的功能----对象的多态:我,你,水...
2)向上造型/自动类型转换:
2.1)超类型的引用指向派生类的对象
2.2)能造型成为的数据类型有:超类+所实现的接口2.3)能点出来什么,看引用的类型
3)强制类型转换,成功的条件只有如下两种:
3.1)引用所指向的对象,就是该类型
3.2)引用所指向的对象,实现了该接口或继承了该类
4)强转时若不符合如上条件,则发生ClassCastException类型转换异常建议:强转之前先通过instanceof来判断引用的对象是否是该类型
 

接口:
1)是一种数据类型(引用类型) implements 实现

2)由interface定义
3)只能包含常量和抽象方法

4)接口不能被实例化
5)接口是需要被实现/继承的,实现/派生类:必须重写接口中的所有抽象方法
6)一个类可以实现多个接口,用逗号分隔若又继承又实现时,应先继承后实现

7)接口可以继承接口
 

抽象方法:
1)由abstract修饰
2)只有方法的定义,没有具体的实现(连{}都没有)

抽象类:
1)由abstract修饰
2)包含抽象方法的类必须是抽象类  3)抽象类不能被实例化
4)抽象类是需要被继承的,派生类:
4.1)重写所有抽象方法---------变不完整为完整
4.2)也声明为抽象类-----------不常用

抽象类的意义:
封装派生类共有的属性和行为--------代码复用  为所有派生类提供统一的类型--------向上造型
可以包含抽象方法,为所有派生类提供统一的入口(造型之后能点出来)
派生类的具体实现不同,但入口是一致的
 

static final常量:应用率高

1)必须声明司时初始化
2)由类名点来访问,不能被改变
3)建议:常量名建议所有字母都大写,多个单词用_分隔

4)编译器在编译时将常量直接替换为具体的值,效率高

5)何时用:数据永远不变,并且经常使用
 

final:

1)修饰变量:变量不能被改变
2)修饰方法:方法不能被重写     3)修饰类:类不能被继承
 

访问控制修饰符:-

1)public:公开的,任何类
2 )private:私有的,本类
3 )protected :受保护的,本类、派生类、同包类  4)默认的:什么也不写,本类、同包类
 

重写与重载的区别:

1)重写(override) :
1.1)发生在父子类中,方法名称相同,参数列表相同,方法体不同

1.2)遵循"运行期绑定",看对象的类型来调用方法


2)重载(overload) :
2.1)发生在同一类中,方法名称相同,参数列表不同,方法体不同

2.2)遵循"编译期绑定",看参数/引用的类型来绑定调用方法
 

继承
1)作用:代码复用
2)通过extends来实现继承
3)超类:所有派生类所共有的属性和行为派生类:派生类所特有的属性和行为
4)派生类继承超类后,派生类具有:派生类的+超类的

5)一个超类可以有多个派生类,一个派生类只能有一个超类-------单一继承

6)继承具有传递性I
 

方法:函数,过程  封装一段特定的业务逻辑功能,尽可能独立,只干一件事。可以反复调用多次,减少代码重复,有益于代码复用

数组:一种数据类型(引用类型) 相同数据类型元素的集合

continue: 跳过循环体中剩余语句,进行下一次循环 

break //跳出循环   在某种特定条件下,提前结束循环

while ,do while, for

嵌套循环

 

switch...case

if语句

算数运算符 +,- ,* , / ,%,++,--

% :取模/取余  余数为0即为整除

++  自增1 -- 自减1  单独使用在前在后都一样

关系运算符   >,<, >= , <= ,== , !=  结果为boolean  true false 

 

扩展赋值自带强转

基本数据类型: byte, short,int,long,float,double,boolean,char

int 整型 4字节  32位 -21个多亿 到21个多亿

整数直接量默认为int类型,但是不能超范围,超出取值范围会报错

两个整数相除,结果还是整数,小数位无条件舍去

整数运算时 若超出范围测发生溢出(溢出不是错误,但是需要避免)

long 长整型 8字节

长整型变量在数字后加L或l  运算时可能溢出  在第一个数字后加L

double 浮点型 8字节

浮点型直接量默认double类型,使用float 在后面加F或f

double 或float 类型参与运算 时 会产生计算误差

boolean  布尔型  true false 1字节

char 字符型 2字节

采用Unicode 字符集编码格式,一个字符对应一个码

表现形式是字符char 但本质上是int (0-65535)

字符型直接量必须放在单引号中,并且只能由一个

特殊符号需要 \ 来转义

Unicode 统一码 定长(16位)字符集

数据类型转换:

数据类型从小到大 

 byte--》short --》 int --》long  --》float --》double

             char--》

两种方式: 自动、隐式类型转换:小类型到大类型

强制类型转换:大类型到小类型 强转可能发生溢出,强转可能丢失精度

两点规则: 整数直接量可以直接赋值给byte short char 但不能超出其范围

byte short char 参与运算时  先将其自动转换为int  在进行运算

 

1G=1024 兆    1M=1024(千字节) 1kb=1024字节 1B=8bit(位)

1G=1024*1024*1024 字节---1073741824字节

变量: 声明,初始化,使用,

命名:只能包含字母数字,_和$ 不能以数字开头 严格区分大小写,不能使用关键字 

允许中文命名,但不建议,建议英文的见名知意,驼峰命名法

JVM:JAVA虚拟机 加载.class文件 并运行.class

JRE:java 运行环境 除了包含JVM 外还包含运行java程序所必需的环境 JRE=JVM+java系统类库(小零件)

JDK: java开发工具包,除了包含JRE以外包含开发java程序所必须的命令工具

JDK=JRE+编译,运行等命令工具

运行Java程序的最小环境 JRE

开发Java程序的最小环境 JDK

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值