被修饰的变量在内存中只存储一份,可以被共享访问和修改。
类中定义一个方法,若这个方法是以执行一个
通用功能为目的
,或者需要方便访问
,则可以申明为静态方法
(即可用类名访问也可用对象访问)工具类里面都是静态方法)
对于一些应用程序中多次需要用到的功能,可以将这些功能封装成静态方法,放在一个类中,这个类就是工具类。(方便调用、提高代码的复用)
一般将工具类的构造器私有
(不需要创建对象,创建对象浪费内存
),不让工具类对外产生影响)
注意事项--静态方法中是不可以出现this关键字的
与类一起加载,
自动触发一次,优先执行
—可以在程序加载时进行静态数据的初始化操作
不随类走,随着对象走
每次创建对象,调用构造器执行时,都会执行该代码块中的代码,并且在构造器执行前执行
设计模式
是一套一直被前人反复使用,多数人知晓、经过分类编目的代码设计经验的总结,后者可以直接拿来解决问题。好的设计模式可以进一步提高代码的重用性。单例设计模式
可以保证系统中,应用模式的这个类永远只有一个实例,即一个类永远只能创建一个对象可以节省内存
。
1、子类可以继承父类的属性和行为,但是
子类不能继承父类的构造器
(子类有自己的构造器,父类构造器用于初始化父类对象)。
2、Java是
单继承模式
一个类只能继承一个父类,但是Java支持多层继承
。
3、Java中所有的类都是
Object
的子类(要么直接继、默认、间接继承了Object,Object是祖宗类)。
4、子类
可以继承父类的私有成员
,但是不可以直接访问
、子类共享父类的静态成员但非继承。
5、在子类方法中访问成员(成员变量、成员方法)满足
就近原则
先找子类,子类没有找父类,父类没有则报错,如果出现重名的成员
,默认先使用子类的成员,若使用父类的成员
则可以使用super关键字
。
在继承体系中,子类出现了和父类一模一样的方法声明
,一般用在子类需要父类的功能但父类的该功能不完全满足自己的需求时
,子类可以重写父类中的方法)
子类中所有的构造器
默认都会先访问父类中无参的构造器
,再执行自己因为
子类在初始化的时候,有可能会使用到父类中的数据,如果父类没有完成初始化,子类将无法使用父类的数据,子类初始化之前一定要调用父类构造器先完成父类数据空间的初始化
注意---如果父类中只有有参构造器则会报错,因为子类默认调用父类无参构造器。此时可**手动**调用父类有参构造器。
管理不同类,利于程序的管理和维护,建包名一般英文小写
假如一个类中需要用到不同类,而这两个类的名称是一样的,那么默认只能导入一个类,
另一个类要带包名访问
。
用来控制一个成员能够被访问的范围
成员变量一般私有,方法一般公开。
使用
public static final修饰的成员变量
,必须有初始值,而且执行的过程中其值不能改变
)常量可以用于做
系统的配置信息
,方便程序的维护,同时也能提高可读性。
是Java中的一种
特殊类型
为了做信息的标志和信息的分类。(枚举只能表示信息的对象,不能表示具体值
)
是一种不完全的设计图
在Java中如果一个类中的某个方法的具体实现不能确定,就可以申明成abstract修饰的抽象方法不能写方法体
,这个类必须用abstract修饰,被称为抽象类抽象类不一定有抽象方法
。
一个类如果继承了抽象类,那么这个类必须
重写完抽象类的全部抽象方法
,否则这个类也必须定义为抽象类。
抽象类
不能创建对象
(Java是严谨性语言,因为抽象类中可能有抽象方法
所以不能实例化)
不能
用abstract修饰变量
、代码块
、构造器
。
当系统中出现同一个功能处在开发、而该功能中大部分代码是一样的,只有其中部分可能不同的时候使用
注意--模板方法一般使用final修饰,因为模板方法是给子类直接使用的,不是让子类重写的,一旦子类重写了模板方法,模板就失效了。
用抽象方法定义的一组行为规范,
接口是更加彻底的抽象
—你是这类事物则必须
完成某些行为`
接口是用来被类实现的,实现接口的类称为实现类(子类)。接口可以被类
单实现
,也可以被类多实现
。
一个类实现接口,必须
重写接口的全部抽象方法
,否则这个类需要定义成抽象类。
允许接口中直接定义带有方法体的方法
(为了丰富接口功能的同时,又不对子类代码进行更改)
同类型的对象,执行同一个行为,会表现出不同的行为特征
多态的综合案例
静态内部类
静态内部类中,可以
直接访问外部的静态成员
(只有一份可以被共享),但是不可以访问外部类的实例成员
(外部类的实例成员必须外部类的对象访问)
成员内部类
无static修饰
,属于外部类的对象,可以直接访问外部类的静态成员,实例方法中可以直接访问外部类的实例成员
局部内部类
匿名内部类
本质上是一个没有名字的局部内部类
,定义在方法中、代码块中、等。方便创建子类对象
对象回调
我把对象送给了别人,别人又回来调我的方法)–接口不可实例化,以下是匿名类创建的对象。