1.行业拓展
信息安全的技能
运维能力:http通信,mysql、oracle, linux, shell编程等等(编程中都有涉猎) Web 的渗透测试:问题--sql注入、反序列化、业务功能(编程中也有涉猎)
Web 的渗透能力:能不能干掉他-代码审计软件开发中最大体量(java),php(编程)
内网渗透的能力:linuxwindows提权等
2.面试题
接口和抽象类的区别
(1)定义抽象类的关键字是abstract class,而定义接口的关键字是interface。
(2)继承抽象类的关键字是extends,而实现接口的关键字是implements。
(3)继承抽象类支持单继承,而实现接口支持多实现。
(4)抽象类中可以有构造方法,而接口中不可以有构造方法。
(5)抽象类中可以有成员变量,而接口中只可以有常量。
(6)抽象类中可以有成员方法,而接口中只可以有抽象方法。
(7)抽象类中增加方法时子类可以不用重写,而接口中增加方法时实现类需要重写。
(8)从jdk1.8开始增加新特性,接口中允许出现非抽象方法,但需要使用default关键字修饰。
抽象类能否使用final声明?
不能,因为final属修饰的类是不能有子类的,而抽象类必须有子类才有意义,所以不能。
抽象类能否有构造方法?
能有构造方法,而且子类对象实例化的时候的流程与普通类的继承是一样的,都是要先调用父类中的构造方法(默认是无参的),之后再调用子类自己的构造方法。
方法重载与方法重写的区别:
1、发生的位置
重载:一个类中重写:子父类中
2、参数列表限制
重载:必须不同重写:必须相同
3、返回值类型
重载:与返回值类型无关
重写:返回值类型必须一致,从jdk1.5开始允许返回子类类型。
4、访问权限:
重载:与访问权限无关
重写:重写后(子)的方法的访问权限不能小于被重写(父)方法的权限
5、异常处理:
重载:跟异常没有关系
重写:异常范围可以小,但是不能抛出新的异常
3.访问权限
访问控制符 访问权限 本类内部 本包中的类 子类内部 其它包中的类
public 公有的 ok ok ok ok
protected 保护的 ok ok ok no
啥也不写 默认的 ok ok no no
private 私有的 ok no no no
public修饰的成员可以在任意位置使用;
private修饰的成员只能在本类内部使用;
通常情况下,成员方法都使用public关键字修饰,成员变量都使用private关键字修饰;
4.final关键字
final关键字用于修饰属性、变量(表示变量变为了常量,无法再对其再次进行赋值)
final修饰的局部变量,只能赋值一次(可以先声明后赋值) final修饰的成员变量时,必须在声明时赋值。 final关键字用于修饰类
final修饰类,不可以被继承
final关键字用于修饰方法
final修饰方法,不允许被子类重写
5.抽象类
抽象类和普通类的区别
1、抽象类必须用public或protected修饰(如果为private修饰,那么子类则无法继承,也就无法实现其抽象方法)。默认缺省为 public
2、抽象类不可以使用new关键字创建对象,但是在子类创建对象时,抽象父类也会被JVM实例化。
3、如果一个子类继承抽象类,那么必须实现其所有的抽象方法。如果有未实现的抽象方法,那么子类也必须定义为 abstract类
6.继承
子类不能继承父类的构造方法和私有方法,但私有成员变量可以被继承只是不能直接访问。
无论使用何种方式构造子类的对象时都会自动调用父类的无参构造方法,来初始化从父类中继承的成员变量,相当于在构造方法的第一行增加代码:super()的效果。
7.方法重写
要求方法名相同、参数列表相同以及返回值类型相同,从jdk1.5开始允许返回子类类型。
要求方法的访问权限不能变小,可以相同或者变大。
要求方法不能抛出更大的异常(异常机制)。
8.多态
(1)当父类类型的引用指向子类类型的对象时,父类类型的引用可以直接调用父类独有的方法;
(2)当父类类型的引用指向子类类型的对象时,父类类型的引用不可以直接调用子类独有的方法;
(3)对于父子类都有的非静态方法来说,编译阶段调用父类版本,运行阶段调用子类重写的版本;
(4)对于父子类都有的静态方法来说,编译和运行阶段都调用父类版本;
9.今日代码
*Runner
*Account