JAVA基础笔记——几个关键字

static super this final abstract extends implements

static关键字:可修饰字段,方法,用static 修饰的成员表示它属于这个类共有,而不是属于该类的单个实例。

特点:
1.随着类的加载而加载,随着类的消失而消失,生命周期长
2.优先于对象存在
3.被所有对象所共享,存在于方法区中
4.可以直接被类名调用

使用注意:
1.静态方法只能访问静态成员
2.但是非静态方法可以访问静态成员
3.静态方法中不可以使用this,super关键字
4.主方法(main)是静态的(可以利用类名去调用静态的main方法,很正常!但是会陷入死循环,导致内存溢出,jvm自动停止!)

类和实例访问字段和方法的语法
访问类成员: 类.字段 类.方法
访问实例成员: 实例.字段 实例.方法

this关键字 :this表示当前对象(正在调用实例对象)的引用。换言之,谁调用了方法,谁就是当前对象

特点:
1.用于方法间的相互调用
2.处理方法中成员变量与参数重名的情况(this.name=name)
3.构造器中相互调用,但是此时this([参数])必须写在构造方法第一行(因为初始化要先执行)
如:
Person(){}
Person(String name) {
this();//调用Person()
this.name = name;
}
Person(String name,int age) {
this(name); //调用上面的构造函数
This.age = age;
}

注意:this不能用在static修饰的方法里和static修饰的代码块里

代码块,静态代码块,构造代码块等的执行先后顺序

class Person {
private int age;
private String name;
private String country =”cn”;
Person() {
System.out.println(“构造函数执行”);
}
Person(String name,int age) {
this.name = name;
this.age = age;
}
{
System.out.println(“构造代码块执行”+age);
}
static {
System.out.println(“静态代码块执行”);
}
public void show() {
System.out.println(“sasa”);
}
public class StaticCodeDemo {

public static void main(String[] args) {
Person s = new Person(“ch”,23);
/执行这一句话,程序都干了些什么?*
* 1.因为用到new Person(),所以会将Person.class加载进内存
* 2.(如果有的话)执行static代码块,给Person.class进行初始化
* 3.内存中开辟空间,分配内存地址
* 4.在内存中建立对象的特有属性,进行默认初始化
* 5.对属性进行显示初始化
* 6.对对象进行构造代码块进行初始化
* 7.对对象进行构造函数初始化
* 8.将内存地址赋值给p变量
* */

}

}

super关键字:表示父类对象的默认引用

特点:
1.如果子类要调用父类被覆盖的实例方法,可用super作为调用者调用父类被覆盖的实例方法
2.使用super调用父类方法
3.使用super调用父类的构造方法

调用构造方法:
1.本类中调用另一个重载构造方法用this(参数列表)
2.子类构造方法调用父类构造方法用super(参数列表)

注意:子类调用父类的构造方法时
1.super必须放在第一句
J2.ava在执行子类的构造方法前会先调用父类无参的构造方法,其目的是为了对继承自父类的成员做初始化操作
3.子类在创建对象的时候,默认调用父类的无参构造方法,要是子类构造方法中显示指定调用父类其他构造方法,就调用指定的父类构造方法,取消调用父类无参构造方法

final关键字:作为一个修饰符修饰变量和方法,增强阅读性

特点:
1.可以修饰类,函数,变量
2.被final修饰的类不能被继承
3.被final修饰的方法不能被覆写
4.被final修饰的变量(成员变量,局部变量)是一个常量,只能赋值一次
如:public static final double PI = 3.14

Abstract关键字:当多个类出现相同的功能,但功能的主体不同,这时可以进行向上抽取,只抽取功能定义,不抽取功能主体

特点:
1.抽象方法一定在抽象类中,抽象类中也可有非抽象方法(抽象类中可以不定义抽象方法)
2.抽象方法和抽象类必须被abstract修饰
3.抽象类中不可以new对象,因为抽象方法没有意义
4.抽象类中的方法要被使用,必须由子类覆写所有的抽象方法(如果子类只覆盖了部分抽象方法,则子类也是一个抽象类),建立子类对象调用

extends关键字:java的继承,表示类与类之间的从属的关系,是一种从一般到特殊的关系

特点:
1、提高了代码的复用性
2、让类与类之间产生关系,有了这个继承关系才有了多态的特性
3、Java语言中类只支持单继承(有别于C语言),但接口可以实现多继承。因为多继承容易带来安全隐患(父类多了, 功能相同的话,就会出现调用不确定性吗,覆写一个方法,到底覆写的谁的?)

模板方法设计模式:在定义功能时,功能的一部分是确定的,一部分是不确定的,将不确定的部分暴露出去,由该类的子类去完成

implements关键字:可以理解为一个特殊的抽象类,当抽象类的所有方法都是抽象的,那么可用接口表示这个类,用Interface修饰接口可以实现多继承

特点:
1.接口中的成员都是public的(变量是final的)
2.接口不可以创建对象(因为有抽象方法),子类将接口的所有方法是实现后才能创建对象,否则子类也是抽象类
3.接口可以被类多实现
4.接口间可以多继承

接口与类的使用:基本功能定义在类中,扩展功能定义在接口中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值