关键字的使用

this关键字的使用

1、this可以用来修饰:属性、方法、构造器
2、this修饰属性和方法:
this理解为当前对象或当前正在创建得到对象
  2.1、在类的方法中,我们可以使用“this.属性”或“this.方法”的方式,调用当前对象的属性或方法。但是通常情况下我们都选择省略“this.”。特殊情况下,如果方法的形参和类的属性同名时,我们必须显式的使用“this.变量”的方式,表明此变量是属性,而非形参。
  2.2、在类的构造器中,我们可以使用“this.属性”或“this.方法”的方式,调用当前正在创建的对象的属性或方法。但是通常情况下我们都选择省略“this.”。特殊情况下,如果构造器的形参和类的属性同名时,我们必须显式的使用“this.变量”的方式,表明此变量是属性,而非形参。
3.this调用构造器
  ①我们在类的构造器中,可以显式的使用“this(形参列表)”方式,调用本类中指定的其它构造器。
  ②构造器中不能通过“this(形参列表)”的方式调用它自己。
  ③如果一个类中有N个构造器,则最多有N-1个构造器中使用了“this(形参列表)”。
  ④规定:“this(形参列表)”必须声明在当前构造器的首行
  ⑤构造器内部,最多只能声明一个“this(形参列表)”,来调用其他构造器

package的使用

  1、为了更好的实现项目中类的管理,提供包的概念。
  2、使用package声明类或接口所属的包,位于源文件的首行。
  3、包属于标识符,遵循标识符的命名规则、规范(小写)、“见名知意”。
  4、每“ . ”一次,就代表一层文件目录。
   补充:同一个包下,不能命名同名的接口、类。不同的包下可以命名同名的接口、类。

import的使用

  1、import :在源文件中显式地使用import结构导入制定包下的类、接口。
  2、声明在包的声明和类的声明之间。
  3、如果需要导入多个结构,则并列写出即可。
  4、可以使用“xxx.”的方式,表示导入xxx包下的所有结构。
  5、如果使用的类或接口是java.lang包下定义的,则可以省略import结构。
  6、如果使用的类或接口是本包下定义的,则可以省略import结构。
  7、如果在源文件中调用不同包下的同名的类,则必须至少有一个类需要以全类名的方式显示、
  8、如果使用“xxx.
”的方式可以表明调用xxx包下的所有结构。但是如果使用的是xxx子包下的结构,则仍需要显示导入。
  9、import static:导入指定类或接口中的静态结构:属性或者方法。

super的使用

  1、super理解为:父类的
  2、super可以用来调用:属性、方法、构造器。
  3、super的使用:属性和方法
  ①我们可以在子类的方法或构造器中,通过使用“super.属性”或“super.方法”的方式,显式的调用父类中声明的属性或方法。但是通常情况下,我们习惯省略“super”
  ②特殊情况:当子类和父类中定义了同名的属性时,我们要想在子类中调用父类中声明的属性时,则必须显式的使用“super.属性”的方式,表明调用的是父类中声明的属性。
  ③特殊情况:当子类中重写了父类中的方法后,我们想在子类的方法中调用父类中被重写的方法时,则必须显式的使用“super.方法”的方式,表明调用得到是父类中声明的方法。
  4、super的使用:调用构造器
  ①我们可以在子类的构造器中显式的使用“super(形参列表)”的方式,调用父类中声明的指定的构造器。
  ②“super(形参列表)”的使用,必须声明在子类构造器的首行。
  ③我们在类的构造器中,针对于“this(形参列表)”或“super(形参列表)”只能二选一,不能同时出现。
  ④当我们在构造器的首行,没有显式的声明“this(形参列表)”或“super(形参列表))”,则默认调用的是父类中空参的构造器:super()。
  ⑤在类的多个构造器中至少有一个类的构造器中使用了“super(形参列表)”,调用父类中的构造器
父类构造器:
父类构造器
子类构造器:
在这里插入图片描述

instanceof的使用

  a instanceof A :判断对象a是否是类A的实例。如果是,返回true。如果不是,返回false。

  使用情景:为了避免在向下转型之前出现ClassCastException的异常,我们在向下转型之前,先进行instanceof的判断,一旦返回true,就进行向下转型。否则不进行向下转型。
  如果 a instanceof A返回true,a instanceof B也返回true。那么类B是类A的父类。

static关键字的使用

  1、static可以用来修饰:属性、方法、代码块、内部类
  2、使用static修饰属性:静态变量(或类变量)
  2.1、属性:按是否使用static修饰,又分为:静态变量 vs 非静态变量(实例变量)
  实例变量:我们创建了类的多个对象,每个对象都独立的拥有一套类中的非静态属性。当修改其中一个对象的非静态属性时,不会导致其他对象中同样的属性值的修改
  静态变量:我们创建了类的多个对象,多个对象共享一个静态变量。当通过某一个对象修改静态变量时,会导致其他对象调用此静态变量时,变量是修改过了的。
  2.2、static修饰属性的其他说明:
  ①静态变量随着类的加载而加载,可以通过“类.静态变量”的方式进行调用。
  ②静态变量的加载要早于对象的创建
  ③由于类只加载一次,所以静态变量在内存中也只会存在一份,存在方法区的静态域中。

  3使用static修饰方法:静态方法
  ①随着类的加载而加载。可以通过“类.静态方法”的方式调用
  ②在这里插入图片描述

  ③静态方法中,只能调用静态的属性或方法,想要不通过对象访问静态变量需要设置静态方法。
  非静态方法中,既可以调用非静态的属性和方法,也可以调用静态的属性和方法。
  4、static注意点:
  在静态的方法内,不能使用this关键字、super关键字
  5、开发中,如何确定一个属性是否声明为static的?

当所有的对象的某个属性是共享的,不会随着对象的变化而变化的
类中的常量也经常声明为static

  开发中,如何确定一个方法是否声明为static的?

操作静态属性的方法,通常设置为static的
工具类中的方法习惯上声明为static的。比如:Math、Arrays、Collections

final关键字的使用

  1、final可以用来修饰的结构:类、方法、变量
  2、final修饰类:
  不能被其他类继承。比如:StringBuffer类、String类、System类
  3、final修饰方法:
  表示方法不能再被重写。比如:Object类中的getClass方法
  4、final用来修饰变量:
  ①用final修饰的变量成为一个常量
  ②final修饰属性:

显示初始化
代码块中初始化
构造器中初始化(必须在每个构造器中都进行赋值)

  ③final修饰形参,表明形参是一个常量,当我们调用此方法时,给常量形参赋一个实参,一旦赋值以后,就只能在方法内使用此形参,但不能进行重新赋值。
  5、static final 用来修饰属性(全局常量)、方法

abstract关键字的使用

  1、可以用来修饰的结构:类、方法
  2、abstract修饰类:抽象类

修饰的类不能实例化
抽象类中一定有构造器,便于子类实例化时调用
开发中,都会提供抽象类的子类,让子类对象实例化,用来完成相关的操作

  3、abstract修饰方法:抽象方法

抽象方法只有声明,没有方法体
包含抽象方法的类一定是一个抽象类,反之,抽象类中是可以没有抽象方法的
若子类重写了父类中的所有抽象方法,此子类才可以实例化。若子类没有重写父类中的所有抽象方法,则子类也需要写为抽象类,需要使用abstract修饰

  4、abstract使用上的注意点:
  ①abstract不能用来修饰:属性、构造器等结构
  ②abstract不能用来修饰:私有方法、静态方法、final的方法、final的类

接口Interface

  1、在Java语言中,接口和类是并列的结构
  2、如何定义接口,定义接口中的成员
  2.1、JDK7及以前:只能定义常量和抽象方法

全局常量声明为public static final 的,但是书写时可以省略不写
抽象方法:public abstract的,但是书写时可以省略不写

  2.2、JDK8:除了定义全局常量和抽象方法之外,还可以定义静态方法、默认方法(包含方法体)

接口中定义的静态方法只能通过接口来调用
通过实现类的对象可以调用接口中的默认方法,如果实现类重写了接口中的默认方法,调用时仍然调用的是重写后的方法
如果子类(或实现类)继承的父类和实现的接口中声明了同名同参数的方法,那么子类在没有重写此方法的情况下,默认调用的是父类中的同名同参数的方法——>类优先原则
如果实现类实现了多个接口,而这多个接口中定义了同名同参数的默认方法,那么在实现类没有重写此方法的情况下,会发生报错——>接口冲突,此时必须在实现类中重写此方法
调用接口当中的默认方法:接口名.super.方法名

  3、接口中不能定义构造器,意味着接口不能被实例化
  4、Java开发中,接口都通过让类去实现(implements)的方式来使用
  如果实现类覆盖了接口中的所有抽象方法,则此实现类可以实例化。如果实现类没有覆盖接口中的所有抽象方法,则此实现类仍为一个抽象类
  5、Java类可以实现多个接口——>弥补了类的单继承性的局限性问题
  格式 class AA extends BB implements CC,DD
  6、接口与接口之间可以继承,而且可以多继承
  7、接口的具体使用上体现多态性
  8、接口实际上可以看做是一种规范

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值