0.写在前面
本笔记用作复习查看用,基础完整总结部分,基础不牢,地动山摇!
Java核心编程总结(一、继承) ???? | https://blog.csdn.net/Augenstern_QXL/article/details/116209463 |
Java核心编程总结(二、抽象类与接口)???? | https://blog.csdn.net/Augenstern_QXL/article/details/116209487 |
Java核心编程总结(三、多态与内部类)???? | https://blog.csdn.net/Augenstern_QXL/article/details/116209507 |
Java核心编程总结(四、异常与线程) ???? | https://blog.csdn.net/Augenstern_QXL/article/details/116209529 |
Java核心编程总结(五、线程池与死锁)???? | https://blog.csdn.net/Augenstern_QXL/article/details/116209580 |
Java核心编程总结(六、常用API与集合)???? | https://blog.csdn.net/Augenstern_QXL/article/details/116209607 |
Java核心编程总结(七、Stream流)???? | https://blog.csdn.net/Augenstern_QXL/article/details/116209624 |
Java核心编程总结(八、IO输入输出流)???? | https://blog.csdn.net/Augenstern_QXL/article/details/116209648 |
Java核心编程总结(九、File文件类)???? | https://blog.csdn.net/Augenstern_QXL/article/details/116209674 |
Java核心编程总结(十、反射) ???? | https://blog.csdn.net/Augenstern_QXL/article/details/117744497 |
基础回顾+面试
抽象类
什么是抽象类?答:父类知道子类一定要完成某个功能,但是每个子类完成的情况是不一样的子类以后也只会用自己重写的功能,那么父类的该功能就可以定义成抽象方法,子类重写调用子类自己的就行什么是抽象方法?答:没有方法体,只有方法签名,必须用abstract修饰。具有抽象方法的类必须定义成抽象类抽象类的作用?答:为了被子类继承一个类继承了抽象类,必须重写完抽象类的全部抽象方法,否则这个类也必须定义成抽象类、抽象类的特征?答:有得有失有得:抽象类得到了具有抽象方法的能力有失:抽象类失去了创建对象的能力(抽象类不能创建对象)抽象类的注意事项和总结:抽象类不能创建对象,如果创建,编译无法通过而报错理解:假设创建了抽象类的对象,调用抽象方法,抽象方法没有方法体,无法执行抽象类一定有而且是必须有构造器,是提供给子类创建对象时,初始化父类成员使用的理解:子类的构造器中,有默认的super(),需要访问父类构造器抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类抽象类的子类,必须重写完抽象父类中的所有抽象方法,否则子类也必须定义成抽象类抽象类存在的意义是为了被子类继承,抽象类体现的是模板思想。
接口
什么是接口?答:接口是更加彻底的抽象在JDK8之前接口中只能是抽象方法和常量接口体现的是规范思想,实现接口的子类必须重写完接口的全部抽象方法接口中抽象方法和常量特征答:接口中的抽象方法可以省略publicabstract不写,默认会加上,如:publicabstractvoidrun()==voidrun()接口中常量是可以省去publicstaticfinal不写,默认会加上,如:publicstaticfinalStringname='小林'==Stringname='小林'什么是常量?答:常量指的是变量值只有一个,且在程序运行过程中不可更改值常量一般修饰符是:publicstaticfinal接口的定义格式修饰符interface接口名称{//在jdk8之前接口中只能是抽象方法和常量}interface定义接口的核心关键字
接口的基本实现
口诀:子类继承父类,实现类实现接口
类与类是继承关系类与接口是实现关系,接口是被类实现的实现接口的类称为:实现类一个类实现接口必须重写完接口中的全部抽象方法,否则这个类要定义成抽象类类实现接口的格式:
修饰符 class 实现类名称 implements 接口1,接口2,接口3,.....{
}
implements: 类实现接口的关键字
类于类是单继承关系,类与接口是多实现关系,接口与接口是多继承关系一个类只能继承一个直接父类一个类可以同时实现多个接口一个接口可以同时继承多个接口一个类实现多个接口,必须重写完全部接口中的全部抽象方法,否则这个类要定义成抽象类
JDK9之后(了解)
JDK8之前,接口中只能是抽象方法和常量JDK8之后接口不再纯洁,新增了三个方法默认方法:就是实例方法必须用default修饰默认会加public修饰publicdefaultvoidrun()==defaultvoidrun()只能用接口的实现类的对象来调用静态方法可以直接加static修饰默认会加public修饰publicstaticvoidrun()==staticvoidrun()接口的静态方法只能用接口的类名称本身调用私有方法(JDK9开始才支持)其实就是私有的实例方法,必须加private修饰
实现多个接口的使用注意事项
如果实现了多个接口,多个接口中存在同名的静态方法并不会冲突原因是只能通过各自接口名访问静态方法当一个类,既继承了一个父类,又实现了若干个接口时,父类中成员方法和接口中的默认方法重名,子类就近选择执行父类的成员方法当一个类实现多个接口时,多个接口中存在同名的默认方法,实现类必须重写这个方法接口中,没有构造器,不能创建对象接口是更彻底的抽象,连构造器都没有,自然不能创建对象!构造器:初始化一个类的对象并返回引用
代码块
代码块按照有无static修饰分为:静态代码块,实例代码块
静态代码块必须用static修饰,属于类,会与类一起优先加载,而且自动触发执行一次!静态代码块可以用于执行类的方法之前进行静态资源的初始化操作格式:static{}实例代码块必须无static修饰,属于类的每个对象,会与类的每个对象一起加载,每次创建对象的时候,实例代码块就会触发执行一次实例代码块可以用于初始化实例资源实例代码块的代码实际上是提取到每个构造器中去执行的(扩展和了解)
final关键字
final修饰类:类不能被继承了final修饰方法:方法不能被重写final修饰变量:变量有且仅能被赋值一次
成员变量和局部变量静态成员变量:有static修饰,属于类,只加载一份final修饰静态成员变量,变量变成了常量实例成员变量:无static修饰,属于每个对象,与对象一起加载局部变量:在方法中,构造器中,代码块中,for循环中的变量,用完作用范围就消失了final修饰局部变量:让值被固定或者说保护起来,执行过程中防止被修改
// 1.final修饰类
final class Animal{
}
// 2.final修饰局部变量
{
final int age = 10;
}
// 3.
单例
什么是单例?答:单例的意思是一个类永远只存在一个对象,不能创建多个对象为什么要用单例?答:开发中很多类的对象我们只需要一个,对象越多占内存越多如何实现单例?答:单例的实现方法目前有两种方式:饿汉单例设计模式:通过类获取单例对象的时候,对象已经提前做好了懒汉单例设计模式:通过类获取单例对象的时候发现没有对象才会去创建一个对象
枚举类
枚举类的作用?答:枚举用于做信息标志和信息分类枚举类的特点答:枚举类是final修饰的,不能被继承枚举类的第一行罗列的是枚举类的对象,而且使用常量存储的所以枚举类的第一行写的都是常量名称,默认存储了枚举对象枚举类的构造器默认是私有的枚举类相当于是多例设计对象
public class EnumDemo01 {
public static void main(String[] args) {
Sex s1 = Sex.BOY;
Sex s2 = Sex.GIRL;
}
}
enum Sex{
BOY,GIRL;
}
面试
抽象类
面试题:抽象类是否有构造器,抽象类是否可以创建对象?答:抽象类作为类一定有构造器,而且抽象类必须有构造器,是提供给子类创建对象调用父类构造器使用的,除此之外,类中有的成分,抽象类都具备(成员变量,成员方法,构造器,内部类,代码块)抽象类虽然有构造器但是抽象类不能创建对象面试题:抽象类中的构造器可以私有吗?答:从代码编译角度,抽象类中的构造器可以私有,但是子类继承默认调用父类构造器会报错因为私有只能在本类中使用,所以抽象类中构造器私有没有意义。
// 反证法:假如抽象类可以创建对象!
public class AbstractDemo {
public static void main(String[] args){
// Animal a = new Animal(); // 报错
// a.run();抽象方法不能执行,因为它没有方法体,所以抽象类不能创建对象
}
}
abstract class Animal{
private String name;
//默认无参构造器
public Animal(){
}
//抽象方法
public abstract void run();
//实例方法
public void test(){
}
//静态方法
public static void Addr(){
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
抽象类存在的意义答:抽象类就是为了被子类继承(就是为了派生子类),否则抽象类毫无意义抽象类体现的是模板思想,部分实现,部分抽象,可以设计模板设计模式理解:抽象类中已经实现的是模板中确定的成员,抽象类不确定如何实现的定义成抽象方法,交给具体的子类去实现
代码块
静态代码块和实例代码块的作用?答:静态代码块有static修饰,属于类,会与类一起优先加载,而且自动触发执行一次!静态代码块可以用于执行类的方法之前进行静态资源的初始化操作实例代码块无static修饰,属于类的对象,会与类的每个对象一起加载,每次创建对象的时候,实例代码块就会触发执行一次,实例代码块可以用于初始化实例资源
final,abstract关键字
请问abstract和final的关系是什么?答:互斥关系,不能同时出现修饰成员!abstract修饰类,类是抽象类,必须被继承final修饰类,类不能被继承abstract修饰方法,方法必须被重写final修饰方法,方法不能被重写
变量
变量有几种?答:成员变量和局部变量静态成员变量:有static修饰,属于类,只加载一份实例成员变量:无static修饰,属于每个对象,与对象一起加载局部变量:只在方法中,构造器中,代码块中,for循环中,用完作用范围就消失了final修饰局部变量:让值被固定或者说保护起来,执行过程中防止被修改
写一个饿汉单例设计模式
饿汉单例设计模式:通过类获取单例对象的时候,对象已经提前做好了
步骤:
定义一个单例类把类的构造器私有定义一个静态成员变量用于存储一个对象!(饿汉单例在返回对象的时候,对象要已经做好)定义一个方法返回单例对象
// 定义一个单例类
class SingleInstance01{
// 2.定义一个静态成员变量用于存储一个对象
public static SingleInstance01 ins = new SingleInstance01();
// 1.把类的构造器私有,构造器只能在本类中访问
// 私有的无参构造器
private SingleInstance01(){
}
// 3.提供一个方法返回单例对象
public static SingleInstance01 getInstance(){
return ins;
}
}
写一个懒汉单例设计模式
懒汉单例模式:通过类获取单例对象的时候发现没有对象才回去创建一个对象
步骤:
定义一个单例类把类的构造器私有定义一个静态成员变量用于存储一个对象(懒汉单例不能直接创建对象,必须需要的时候才去创建)定义一个方法返回单例对象,判断对象不存在才创建一次,存在直接返回
// 定义一个单例类
class SingleInstance2{
//定义一个静态成员变量用于存储一个对象!
public static SingleInstance2 ins;
// 1.把类的构造器私有
private SingleInstance2(){
}
// 3.通过方法返回一个对象,第一次不存在对象才创建一个返回
public static SingleInstance2 getInstance(){
if(ins == null){
//第一次来取对象,创建一个对象
ins = new SingleInstance2();
}
return ins;
}
}
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点