Java--面向对象三(关键字)

4、关键字

 4.1 this

​   理解:当前对象 或 当前正在创建的对象

 4.1.1 this调用属性、方法

​   格式: this.属性(方法)

​   在类的方法中,我们可以使用"this.属性"或"this.方法"的方式,调用当前对象属性或方法。通常省略,如果构造器的形参和类的属性同名时,显式的表示

 4.1.2 this调用构造器

​   格式:this()

​   在类的构造器中,可以显式的使用"this(形参列表)"方式,调用本类中指定的其他构造器

​   规则:

​   (1)不能通过"this(形参列表)"方式调用自己

​   (2)"this(形参列表)"必须声明在当前构造器的首行

​   (3)构造器内部,最多只能声明一个"this(形参列表)"

 4.2 super

 4.2.1 super调用属性、方法

​   格式: super.属性(方法)

​   在子类的方法或构造器中,通过使用"super.属性"或"super.方法"的方式,显式的调用父类中声明的属性或方法。当子类和父类中定义了同名的属性时或者当子类重写了父类中的方法以后,在子类中调用父类中声明的属性必须显式使用super

 4.2.2 super调用构造器

​   格式: super()

​   在子类的构造器中显式的使用"super(形参列表)"的方式,调用父类中声明的指定的构造器

​   规则:

​   (1)"super(形参列表)"的使用,必须声明在子类构造器的首行

​   (2)针对于"this(形参列表)"或"super(形参列表)"只能二一,不能同时出现

​   (3)在构造器的首行,没显式的声明"this(形参列表)“或"super(形参列表)”,则默认调用的是父类中空参的构造器:super()

​   (4)在类的多个构造器中,至少一个类的构造器中使用了"super(形参列表)",调用父类中的构造器

 4.3 package

​  使用package声明类或接口所属的包,声明在源文件的首行

 4.3.1 JDK中主要包的介绍

  • java.lang:包含一些Java语言的核心类,如String
  • java.net:包含执行与网络相关的操作的类和接口
  • java.io:提供多种输入、输出功能的类
  • java.util:包含一些实用的工具类
  • java.text:包含一些Java格式化相关的类
  • java.sql:包含了Java进行JDBC数据库编程相关的类
  • java.awt:包含了构成抽象窗口的工具集

 4.4 import

​   import就是在java文件开头的地方导入

  • 在源文件中显式的使用import结构导入指定包下的类、接口
  • 声明在包的声明和类的声明之间
  • 可以使用"xxx.*"的方式,表示可以导入xxx包下的所有结构
  • 如果使用的类或接口是java.lang包下定义的,则可以省略import结构
  • 如果使用的类或接口是本包下定义的,则可以省略import结构
  • 如果在源文件中,使用了不同包下的同名的类,则必须至少一个类需要以全类名的方式显示。
  • 使用"xxx.*"方式表明可以调用xxx包下的所结构。但是如果使用的是xxx子包下的结构,则仍需要显式导入
  • import static:导入指定类或接口中的静态结构:属性或方法。

 4.5 static(静态的)

  static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问

 4.5.1 static修饰属性:静态变量、类变量

  静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。

 4.5.2 static修饰方法:静态方法、类方法

  • ​ static方法一般称作静态方法
  • ​ 静态方法不依赖于任何对象就可以进行访问
  • ​ 在静态方法中不能访问非静态成员方法和非静态成员变量
  • ​ 在非静态成员方法中是可以访问静态成员方法/变量的
  • ​ 在静态的方法内,不能使用this关键字、super关键字

 4.5.3 static修饰代码块

​  static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。

 4.6 final(最终的)

  • final 用来修饰一个类:此类不能被其他类所继承。比如:String类
  • final 用来修饰方法:表明此方法不可以被重写。比如:Object类中getClass()
  • final 用来修饰变量:此时的"变量"就称为是一个常量
  • static final 用来修饰属性:全局常量

 4.7 abstract(抽象的)

  • abstract修饰类或方法
  • 抽象类不能实例化
  • 抽象方法只方法的声明,没方法体
  • 包含抽象方法的类,一定是一个抽象类。反之,抽象类中可以没有抽象方法
  • 若子类重写了父类中的所的抽象方法后,此子类方可实例化
  • abstract不能用来修饰:属性、构造器等结构
  • abstract不能用来修饰私方法、静态方法、final的方法、final的类

 4.8 interface(接口)

 4.8.1 定义接口

  • 接口使用interface来定义

  • 定义接口中的成员(全局常量、抽象方法、静态方法)

  • 接口中不能定义构造器的

  • 接口与接口之间可以继承

 4.8.2 接口新规范

  • 接口中定义的静态方法,只能通过接口来调用

  • 通过实现类的对象,可以调用接口中的默认方法

  • 如果子类(或实现类)继承的父类和实现的接口中声明了同名同参数的默认方法,那么子类在没重写此方法的情况下,默认调用的是父类中的同名同参数的方法。

 4.9 抽象类与接口的异同

 4.9.1 相同点

  • 都可以被继承

  • 都不能被实例化

  • 都包含抽象方法

  • 都可以实现程序的多态性

 4.9.2 不同点

  • 抽象类用abstract class定义,接口用interface定义
  • 抽象类是对事物更高级的封装,接口是对功能的实现
  • 抽象类可以定义普通类能定义的所有方法 ,接口只能定义抽象方法、常量、静态方法、默认方法
  • 抽象类是被子类extends继承,接口是被实现类implement实现
  • 抽象类包括所有类都只支持单继承,接口支持多继承
发布了121 篇原创文章 · 获赞 45 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_41596568/article/details/103243288