1、static关键字
(1)主要用来修饰类的成员(成员变量、方法)
例如:main函数 static 修饰
(2)static 特点
a、static 修饰的成员在类加载的时候直接运行,优先级要高
b、通过类直接访问 类名.成员
c、static是针对所有对象的属性值相同时才使用 static 修饰
d、被static修饰的方法 无法是有非静态变量;非静态方法 不受限制
2、静态构造代码块
形如:
class 类名{
static{
变量;
}
}
主要是为了 方便变量的统一初始化 执行且只执行一次
3、构造代码块
直接在类中定义没有被 static修饰的代码块
形如:
class 类名{
{
变量;
}–构造代码块
func(){
{
}–普通代码块
}
}
构造代码块可以执行多次,在创建对象的时候使用
优先级:先是 静态构造代码块>构造代码块>构造函数
4、继承的介绍与使用
(1) extends 多个类中存在相同属性和行为时,将这些内容抽象到单独的一个类中,那么多个类
无序再定义这些属性和行为,只需要继承即可
父类:又叫基类,超类
子类:派生类
(2)子类可以访问父类中的非私有的属性和行为
(3)子类不能够继承父类的构造方法
(4)父类可以被多个子类继承,但是子类只有一个直接父类
(5)继承多以存在多级
5、方法重写
重载:在同一类中 方法名一样 参数列表不同
重写:在继承中出现的,是子类与父类具有相同的方法,子类的这一个方法 叫做重写
方法名、返回值、参数列表相同(不同的是函数体) 覆盖
6、super关键字
super 作用
(1)在子类的构造方法中直接通过super关键字 调用父类的构造方法
如果父类有多个构造函数 根据 参数列表来区分 必须放在第一行
(2)如果父类与子类中有同名成员变量,此时要访问父类成员变量可以通过super
(3)如果子类重写了父类的方法 ,可以通过 super调用父类的方法
this–当前对象 子类的方法、属性
super–父类对象 父类的方法、属性
(4)子类而言 是不是继承了我们父类的所有,自然我们继承了 父类的父类的成员变量和方法
所以可以直接通过super调用
super.super 多余了
(5)破坏了 java的封装性 只有一个直接父类
7、final关键字的使用
final关键字 是一个修饰符,用来修饰 类 方法 变量
(1)final修饰一个类,则不能够被继承
final类 不想被重新进行重写方法、扩展属性—-直接用 不想被人改变 完美
例如:String
(2)final 修饰方法,则方法不能够被重写
(3)final修饰变量,如果这个值一旦被指定 则 无法改变
8、static 与 final 关键字
static:静态变量 只保留一个副本
final:用来表示变量不可变
被static 修饰以后 只有一个值
final 有多个值 因为每次都会赋予一个值 只是保证赋予的这个值不变
9、Object 类
顶级父类,是任何类的父类,可以显式的继承 也可以隐式的继承
需要重写的方法
toString 方法:需要重写 来满足业务需求
equals 方法。比较的是地址
应用比较广泛
10、抽象方法
(1)抽象方法是一种特殊的方法,只有声明没有方法体
(2)声明的格式为:
abstract 返回值类型 func(参数列表)–抽象方法
(public static void main(){方法体})
(3)抽象方法存在的意义在于 父类不想或者无法提供方法的方法体(具体实现)
只知道有这个方法(针对不同的类 实现方法 不一样)
11、抽象类
(1)如果一个类中含有抽象方法,则该类必须被定义为抽象类
反过来 抽象类中不一定含有抽象方法
(2)声明的格式:
abstract class 类名{}—抽象类
(3)抽象类特点:
a、抽象方法与抽象类均不可以被 final修饰
b、如果一个类继承抽象类,则必须完全实现其抽象方法,否则声明为抽象类
c、抽象方法必须为 public 或 protected 修饰,不能够用 private 或 static
12、接口(interface)
//数据接口–数据接口协议
(1)抽象类的延伸–在一个类中如果所有的方法都是抽象的,则可定义成接口
接口比抽象类 更加纯粹。全抽象的
(2)接口实现 implements —-对比 继承 extends
(3)java中 子类只能够有一个直接父类,要多继承,必须使用接口
接口可以实现多次
例如:
class A implements I1,I2{
}
//可以组合写 接口可以实现无限个
class A extends B implements I1,I2{
}
(4)接口的声明:
interface 接口名{}
(5)接口不可以实例化,只能够用于实现。
(6)接口当中可以含有成员变量和方法,方法都是抽象的
变量–public static final
一般情况下不要在接口中定义变量
(7) 接口中可以定义默认的方法 default 和静态方法
13、接口与抽象类的区别
(1)抽象类可以实现接口,接口可以继承接口
(2)接口中定义的方法都是抽象的,而抽象类中可以含有普通方法
(3)接口中的成员变量 都是public static final的,而抽象类中可以有普通变量
(4)接口中一定不含有构造方法,但抽象类中可以有构造方法
(5)接口不可以实例化,抽象类可以在子类创建对象的时候自动创建抽象类的对象
(6)接口可以多实现,但是抽象类只能够单继承