Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类

文章目录

  • 一、static、单例、代码块、继承
  • 1、static(静态)
  • 2、静态代码块 - static{ }
  • 3、构造代码块 -格式:{ }
  • 4、单例设计模式(饿汉、懒汉单例)
  • 5、继承
  • 6、方法重写
  • 7、子类构造器
  • 8、this与super
  • 二、包、权限修饰符、final、常量、枚举、抽象类、接口
  • 1、包
  • 2、权限修饰符
  • 3、final(不能被重写、赋值、继承)
  • 4、常量
  • 5、枚举
  • 6、抽象类
  • 7、模板方法模式
  • 8、接口
  • 三、多态、内部类
  • 1、多态
  • 2、内部类(静态、成员(非静态)、局部、匿名)


一、static、单例、代码块、继承


1、static(静态)

被修饰的变量在内存中只存储一份,可以被共享访问和修改。

类中定义一个方法,若这个方法是以执行一个通用功能为目的,或者需要方便访问,则可以申明为静态方法(即可用类名访问也可用对象访问)工具类里面都是静态方法)
对于一些应用程序中多次需要用到的功能,可以将这些功能封装成静态方法,放在一个类中,这个类就是工具类。(方便调用、提高代码的复用)
一般将工具类的构造器私有(不需要创建对象,创建对象浪费内存),不让工具类对外产生影响)
注意事项--静态方法中是不可以出现this关键字的


2、静态代码块 - static{ }

与类一起加载,自动触发一次,优先执行—可以在程序加载时进行静态数据的初始化操作


3、构造代码块 -格式:{ }

不随类走,随着对象走

每次创建对象,调用构造器执行时,都会执行该代码块中的代码,并且在构造器执行前执行


4、单例设计模式(饿汉、懒汉单例)

设计模式是一套一直被前人反复使用,多数人知晓、经过分类编目的代码设计经验的总结,后者可以直接拿来解决问题。好的设计模式可以进一步提高代码的重用性。单例设计模式可以保证系统中,应用模式的这个类永远只有一个实例,即一个类永远只能创建一个对象可以节省内存

Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类_第1张图片
Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类_第2张图片
Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类_第3张图片


5、继承

1、子类可以继承父类的属性和行为,但是子类不能继承父类的构造器(子类有自己的构造器,父类构造器用于初始化父类对象)。

2、Java是单继承模式一个类只能继承一个父类,但是Java支持多层继承

3、Java中所有的类都是Object的子类(要么直接继、默认、间接继承了Object,Object是祖宗类)。

4、子类可以继承父类的私有成员,但是不可以直接访问、子类共享父类的静态成员但非继承。

5、在子类方法中访问成员(成员变量、成员方法)满足就近原则先找子类,子类没有找父类,父类没有则报错,如果出现重名的成员,默认先使用子类的成员,若使用父类的成员则可以使用super关键字


6、方法重写

在继承体系中,子类出现了和父类一模一样的方法声明,一般用在子类需要父类的功能但父类的该功能不完全满足自己的需求时,子类可以重写父类中的方法)
Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类_第4张图片


7、子类构造器

子类中所有的构造器默认都会先访问父类中无参的构造器,再执行自己因为子类在初始化的时候,有可能会使用到父类中的数据,如果父类没有完成初始化,子类将无法使用父类的数据,子类初始化之前一定要调用父类构造器先完成父类数据空间的初始化

Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类_第5张图片
注意---如果父类中只有有参构造器则会报错,因为子类默认调用父类无参构造器。此时可**手动**调用父类有参构造器。


8、this与super

Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类_第6张图片
在这里插入图片描述
Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类_第7张图片


二、包、权限修饰符、final、常量、枚举、抽象类、接口


1、包

管理不同类,利于程序的管理和维护,建包名一般英文小写

假如一个类中需要用到不同类,而这两个类的名称是一样的,那么默认只能导入一个类,另一个类要带包名访问

Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类_第8张图片


2、权限修饰符

用来控制一个成员能够被访问的范围

成员变量一般私有,方法一般公开。

Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类_第9张图片


3、final(不能被重写、赋值、继承)

Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类_第10张图片
变量有局部变量和成员变量(静态成员变量和实例成员变量)


4、常量

使用public static final修饰的成员变量必须有初始值,而且执行的过程中其值不能改变

常量可以用于做系统的配置信息,方便程序的维护,同时也能提高可读性。

Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类_第11张图片


5、枚举

是Java中的一种特殊类型为了做信息的标志和信息的分类。(枚举只能表示信息的对象,不能表示具体值

Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类_第12张图片
Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类_第13张图片
在这里插入图片描述


6、抽象类

是一种不完全的设计图在Java中如果一个类中的某个方法的具体实现不能确定,就可以申明成abstract修饰的抽象方法不能写方法体,这个类必须用abstract修饰,被称为抽象类抽象类不一定有抽象方法

一个类如果继承了抽象类,那么这个类必须重写完抽象类的全部抽象方法,否则这个类也必须定义为抽象类。

抽象类不能创建对象(Java是严谨性语言,因为抽象类中可能有抽象方法所以不能实例化)

不能用abstract修饰变量代码块构造器

Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类_第14张图片


7、模板方法模式

当系统中出现同一个功能处在开发、而该功能中大部分代码是一样的,只有其中部分可能不同的时候使用
Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类_第15张图片

注意--模板方法一般使用final修饰,因为模板方法是给子类直接使用的,不是让子类重写的,一旦子类重写了模板方法,模板就失效了。


8、接口

用抽象方法定义的一组行为规范,接口是更加彻底的抽象—你是这类事物则必须完成某些行为`

Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类_第16张图片

接口是用来被类实现的,实现接口的类称为实现类(子类)。接口可以被类单实现,也可以被类多实现

一个类实现接口,必须重写接口的全部抽象方法,否则这个类需要定义成抽象类。

允许接口中直接定义带有方法体的方法(为了丰富接口功能的同时,又不对子类代码进行更改)

Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类_第17张图片
Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类_第18张图片
Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类_第19张图片
Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类_第20张图片

Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类_第21张图片


三、多态、内部类


1、多态

同类型的对象,执行同一个行为,会表现出不同的行为特征

Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类_第22张图片
Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类_第23张图片
Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类_第24张图片
Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类_第25张图片

多态的综合案例

Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类_第26张图片

Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类_第27张图片


2、内部类(静态、成员(非静态)、局部、匿名)

定义在一个类里面的类(寄生),外部类(宿主)
Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类_第28张图片

静态内部类

Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类_第29张图片

静态内部类中,可以直接访问外部的静态成员(只有一份可以被共享),但是不可以访问外部类的实例成员(外部类的实例成员必须外部类的对象访问)

Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类_第30张图片
Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类_第31张图片

成员内部类
无static修饰,属于外部类的对象,可以直接访问外部类的静态成员,实例方法中可以直接访问外部类的实例成员

Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类_第32张图片

Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类_第33张图片
Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类_第34张图片
Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类_第35张图片

局部内部类

在这里插入图片描述
Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类_第36张图片

匿名内部类
本质上是一个没有名字的局部内部类,定义在方法中、代码块中、等。方便创建子类对象

Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类_第37张图片
Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类_第38张图片
Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类_第39张图片

对象回调我把对象送给了别人,别人又回来调我的方法)–接口不可实例化,以下是匿名类创建的对象。

Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类_第40张图片
Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类_第41张图片
Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类_第42张图片
Java学习路线(进阶篇一)static、单例、代码块、继承,包、权限修饰符、final、常量、枚举、抽象类、接口,多态、内部类_第43张图片

你可能感兴趣的:(JAVA学习路线计划,java,学习,单例模式)