Java基础-OOP概念性查缺补漏(static、final、abtract、interface、多态)

Java基础-OOP概念性查缺补漏(static、final、abtract、interface、多态)

Static

语法

语法:static数据类型 变量名web

使用static修饰的属性咱们认为是类的属性不带static修饰的属性咱们认为是对象的属性jvm

类属性访问

第一种方式:类名.类属性(推荐使用)
第二种方式:对象实例.类属性svg

应用场景

咱们把常量通常定义成static,或者当前类建立的每个对象都有相同的属性也能够把这种属性定义成staticcode

生命周期

对象属性生命周期
建立对象的时候初始化对象属性(没有类属性早),当当前对象变成匿名对象时,jvm会回收该垃圾对象,对象属性随之消失xml

类属性的生命周期:
当.class文件被载入内存时类属性就初始化了,jvm关闭类属性就消失对象

修饰在方法上

语法:
public static 返回值(void) 方法名(数据类型1 变量1,数据类型2 变量2,….){
				方法体
				[return 结果]
}

static修饰在方法上就是类方法继承

类方法的访问:

第一种方式:类名.类方法()推荐使用
第二种方式:对象实例.类方法()接口

类方法对属性的访问

访问对象属性:
类方法是不管是经过类访问仍是经过对象访问都不能直接访问对象属性生命周期

final

final修饰在方法上

final修饰的方法不能被复写内存

修饰在属性上

称最终变量,不能被改动赋值

修饰在类上

语法 final class 类名{
	属性
方法
}

使用final来修饰的类是不能够被继承的。

abtract

抽象方法

当多个具体的实体类存在着共同的行为,可是有不一样的表现,咱们在父类继承过程当中父类的方法具体实现不一样肯定,可是能肯定的是他们都有这种行为。
咱们要把这种行为方法做为抽象方法

语法

public abtract [返回值][void] 方法名 (参数列表); 没有方法体

若是在一个类中存在一个抽象方法,那么这个类必定是抽象类。这个类上也要有abstract标识

抽象类

语法

abstract class  类名{
	属性
	方法
}

抽象类中能够没有抽象方法,可是有抽象方法的类必定是抽象类

特色

  • 抽象类不能被实例化
  • 抽象类必须被子类继承才能使用子类实例化
  • 继承了抽象类的非抽象类必须实现抽象类的全部抽象方法
  • 抽象类也能够继承抽象类,这样不须要实现父抽象类的方法
  • 抽象类的抽象方法不能和private,final, static共存

interface

使用interface(接口)的好处

  • 分层开发,分模块开发
  • 下降代码的耦合度,提升代码的可扩展性和可维护性
  • 改进了Java单继承的局限

与抽象类的区别

  • 接口的全部方法(能够添加static、final)都是抽象的,抽象类里面的方法能够是抽象的也能够是不抽象的

  • 接口和抽象类都不能实例化

  • 抽象类只能单继承,接口能够多继承与多实现

  • 接口中的属性是static final类型的,抽象类中的属性跟普通类中的属性没有区别

  • 接口中的方法默认就是抽象的不须要加absract,抽象类中的抽象方法须要加abstract关键字

多态

多态就是行为具备表现多种功能的能力

继承多态

咱们一般使用抽象类来抽象要使用多态的方法

特色

1.必需要有继承关系,在抽象类中能够定义多态的抽象方法,经过子类来继承这个抽象类而后复写抽象类中的抽象方法以达到多态的效果。
2.多态子类的实例能够赋给父类的引用

3.咱们能够经过instanceof来判断当前父类的引用的实例是什么类型

接口多态

接口的多态基本上和类的继承的多态一致

不一样的是类的继承使用的是继承关系实现多态,接口采用实现的方式实现多态