JavaSE复习(一)继承多态与常用API
继承与多态
在父子类的继承关系当中,如果成员变量重名,则创建子类对象时,访问有两种方式:
- 直接通过子类对象访问成员变量:等号左边是谁,就优先用谁,没有则向上找
- 间接通过成员方法访问成员变量:该方法属于谁,就优先用谁,没有则向上找
从Java 8 开始,接口里允许定义默认方法
格式
public default 返回值类型 方法名称(参数列表){
方法体
}
备注:接口当中的默认方法,可以解决接口升级的问题
从Java 9 开始,接口中允许定义私有方法
多态的代码中,成员变量和成员方法的访问规则
- 成员变量:编译看左边,运行还看左边
- 成员方法:编译看左边,运行看右边
多态
体现多态性:父类引用指向子类对象
好处:无论右边new的时候换成哪个子类对象,等号左边调用方法都不会变化
内部类
成员内部类
内用外,随意访问;外用内,需要内部类对象
使用方式:
间接方式:在外部类的方式当中,使用内部类;然后调用外部类的方法
直接方式,公式:
【外部类名称.内部类名称 对象名 = new 外部类名称().new 内部类名称();】
局部内部类(包含匿名内部类)
要访问所在方法的局部变量,那么这个局部变量必须是【有效final】的。
从Java 8 开始,只要局部变量事实不变,那么final关键字可以省略
权限修饰符规则:
- 外部类:public、(default)
- 成员内部类:public、protected、(default)、private
- 局部内部类:什么都不写
常用API
String
String和int相互转换
int--->String
num + ""
低效String.valueOf(num)
Integer.toString(num)
String--->int
Integer.parseInt(str)
Integer.valueOf(str).intValue()
双引号直接写的字符串在常量池当中,new出来的不在池中
常量.equals字符串时建议把常量放前面,避免因字符串为空导致的空指针异常
分割字符串的
split()
方法的参数是一个正则表达式,以"."分割是要写成"\\.
"输出一维数组:
Arrays.toString(arr)
输出二维数组:
Arrays.deepToString(str)
String 为什么是 final 的
实现字符串池:不可变才能实现字符串池,如果字符串是可变的,那么一个引用操作改变了对象的值,对其他引用会有影响
安全性:这些核心类的内部方法的实现并不是Java本身编写的,好多都是调用的操作系统本地的API,如果String可以被继承重写,就有可能被恶意的重写其中的方法,造成安全隐患;同时因为不可变,使得String是多线程安全的
效率:如果已经存在这个字符串常量便不会再创建,直接拿来用
JavaSE复习(一)继承多态与常用API的更多相关文章
- JavaSE复习日记 : 继承关系和super关键字以及继承关系中方法的覆写
/* * 类的继承和super关键字 * * 软件开发的三大目的: * 可拓展性; * 可维护性; * 可重用性; * * 这里单说下可重用性这一项: * 为了代码复用,复用方式有: * 函数的调用复 ...
- JavaSE 复习_4 接口多态和内部类
△abstract不可以修饰成员变量 △一个类可以没有抽象方法,可以定义为抽象类,这样的目的是不能让其他类建立本类对象,交给子类完成. △abstract和static(可以被类名调用方法,但是抽象方 ...
- JavaSE复习_3 继承
△先默认初始化,在显示初始化,在构造函数初始化 △继承的弊端:代码的耦合性增加了. △子类不能继承父类的构造方法. △子类会拥有父类的私有成员变量,但是必须通过get,set方法访问. △super不 ...
- JavaSE环境Shiro的搭建及常用API
通过shiroAPI来进行角色的管理 模拟用户是否登录: 模拟用户是否具有相应的权限:
- python oop常用术语 继承 多态 封装
面向对象优点 1.通过封装明确了内外 2.通过继承+多态在语言层面支持了归一化设计 抽象/实现 抽象指对现实世界问题和实体的本质表现,行为和特征建模,建立一个相关的子集,可以用于 绘程序结构,从而实现 ...
- Java基础学习笔记十二 类、抽象类、接口作为方法参数和返回值以及常用API
不同修饰符使用细节 常用来修饰类.方法.变量的修饰符 public 权限修饰符,公共访问, 类,方法,成员变量 protected 权限修饰符,受保护访问, 方法,成员变量 默认什么也不写 也是一种权 ...
- 【repost】Javascript操作DOM常用API总结
Javascript操作DOM常用API总结 文本整理了javascript操作DOM的一些常用的api,根据其作用整理成为创建,修改,查询等多种类型的api,主要用于复习基础知识,加深对原生js的认 ...
- JavaSE学习笔记(8)---常用类
JavaSE学习笔记(8)---常用类 1.Object类 java.lang.Object类是Java语言中的根类,即所有类的父类.它中描述的所有方法子类都可以使用.在对象实例化的时候,最终找的父类 ...
- 常用API【2】
常用API 1.Math类 1.1 Math类概述 Math包含执行基本数字运算的方法 没有构造方法,如何使用类中的成员呢? 看类的成员是否是静态的,如果是,可以通过类名直接调用 1.2Math类的常 ...
随机推荐
- linq 和lambda查询
EF 查询的两种 写法. linq 方法 或者 lambda方法 其中 ,只有tolist()的时候,才会真正的 在数据库中执行. 如果没有 tolist 方法,那么province1是 iqueab ...
- AVR446_Linear speed control of stepper motor步进电机曲线分析
1.1. 单片机代码处理 // 定义定时器预分频,定时器实际时钟频率为:72MHz/(STEPMOTOR_TIMx_PRESCALER+1) #define STEPMOTOR_TIM_PRESCA ...
- 手动创建maven项目+cmd+webapp+tomcat
1.创建文件夹 2.在刚刚创建的文件夹目录下:创建一个scr文件夹和pom.xml文件 3.在pom.xml配置 <?xml version="1.0" encoding=& ...
- redis事务中的WATCH命令和基于CAS的乐观锁
转自:http://blog.sina.com.cn/s/blog_ae8441630101cgy3.html 在Redis的事务中,WATCH命令可用于提供CAS(check-and-set)功能. ...
- 批量删除xml文件中的<?xml version="1.0" ?>
#!/bin/shcd 'home/usrname/'ls cd '/home/usrname/VOC2007/Annotations/' for file in `ls /home/usrname/ ...
- 在jdbc基础上进阶一小步的C3p0 连接池(DBCP 不能读xml配置文件,已淘汰) 和DBUtils 中两个主要类QueryRunner和ResultSetHandler的使用
首先看C3p0这个连接池,最大优势可以自动读取默认的配置文件 <?xml version="1.0" encoding="UTF-8"?> < ...
- tcp文件下载客户端+服务端
客户端: import socket if __name__ == '__main__': # 创建tcp客户端socket tcp_client_socket = socket.socket(soc ...
- linux下,把屏幕竖起来
xrandr -o left 向左旋转90度 xrandr -o right 向右旋转90度 xrandr -o inverted 上下翻转 xrandr -o normal 回到正常角度
- python_字符串_常用处理
1. 输出原序列的反向互补序列 in1 = open("brca1.fasta", "r") out1 = open("re_brca1.fasta& ...
- Linux平台下安装MySQL
1.下载RPM包 http://dev.mysql.com/downloads/mysql/5.5.html#downloads 选择[Red Hat & Oracle Enterprise ...