java面向对象super_JAVA 面向对象(this与super的区别

JAVA 面向对象(this与super的区别,构造代码块和局部代码块,静态代码块的区别)

因为东西太多,一篇文章讲完怕是大家也不想看,而且博主也是最近从C++初学JAVA可能不一样的东西一时没发现,所以慢慢分两章更新,以方便大家阅读来指出错误。

上一篇文章的地址戳这里

在上一篇中,我大概说了,面向对象编程的思想和基本概念,以及对象的在内存中的存储方式,构造与析构,以及四大特征中的两个(抽象和封装),这篇文章主要是对一些基本概念的补充。

一点点基本概念

构造代码块

首先是他的基本概念:

1、 在类的内部,方法外部的代码块。

2、 通常用于抽取构造方法中的共性代码。

3、 每次调用构造方法前都会调用构造代码块

4、 优先于构造方法加载

这个概念看完好像是是而非,那么我们看段代码:

class c{

String country;

int a;

{

country="中国";

}

public c() {

System.out.println("1号选手,来自"+country);

}

public c(int a) {

System.out.println("2号选手,也来自"+country);

}

}

public class oopjc {

public static void main(String[] args) {

new c();

new c(1);

}

}

他的输出是:

c91ac9a9f6496c9f662fd91b98e32516.png

我们看代码的位置是在类中,方法外;他里边的变量country属于构造函数中总共有的变量,也就是共性代码,而且从输出我们可以知道它比构造函数的调用早一点。

局部代码块

首先是他的基本概念:

1、 在方法里面的代码块

2、 通常用于控制变量的作用范围,出了括号就失效

3、 变量的范围越小越好,成员变量会有线程安全问题

public c(int a) {

{

System.out.println("你好我是局部代码块");

}

System.out.println("2号选手,也来自"+country);

}

静态代码块

1.位置:在类里方法外

2.在类第一次加载时就加载到内存中并一直驻存,

3.全局共享,直到类消失静态资源才消失

4.静态资源只被加载一次

5.一般用于项目的初始化

三者的执行顺序

静态 - 构造代码块 - 构造方法 - 局部

static {

name="来福";

}

{

System.out.println(name);

}

public Anmail() {

System.out.println(name);

}

输出了两次次来福

this关键字

this代表本类对象的一个引用对象。

构造函数中,this()必须放在第一行。

public Anmail(String name, int age) {

// TODO Auto-generated constructor stub

this.name=name;

this.age=age;

}

我们在构造函数的时候,有时候会出现这种变量和成员变量命名一致的情况,或者方法名一样的情况,我们需要有一个方法来区别他们,就是this,在类中使用this.变量就是指成员变量。

那么他还可以怎么使用呢?

我们还可以用它来实现构造方法间的调用:

public Anmail() {

this("来福",1);

System.out.println(name);

}

public Anmail(String name, int age) {

// TODO Auto-generated constructor stub

this.name=name;

this.age=age;

}

super关键字

1、 通过super关键字可以使用父类的内容

2、 super代表父类的一个引用对象

3、 如果用,必须出现在调用位置的第一行

这个和this差不多只不过this是表示自己类的而super是指父类的。

this和super的区别

1、 this代表本类对象的引用,super代表父类对象的引用。

2、 this用于区分局部变量和成员变量

3、 super用于区分本类变量和父类变量

4、 this.成员变量 this.成员方法() this([参数])代表调用本类内容

5、 super.成员变量 super.成员方法() super([参数]),代表调用父类内容

6、 this和super不可以同时出现在同一个构造方法里,他们两个只要出现都得放在第一行,同时出现的话,到底第一行放谁

控制访问符号

e36a78ccfab7752b720564c45039cc64.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值