Java构造器及几个基本概念

关于构造器
carey-pro 写道
1)java 构造器不是函数,所以他不能被继承,这在我们写子类的构造器的时候,即使子类构造参数和父类是完全一样的,我们也要写super()的原因;

2)构造器的修饰符比较有限,就缺省、public、priate、protected四种,其他任何的修饰符都不能对其使用,也就是说构造器不能被修饰成抽象,同步,静态等

3)因为构造器不是函数,所以构造器不能有返回值,但要说明的是构造器中允许存在retrun语句,但是return语句中什么也不能返回。 (构造器是有返回值的,返回的是该类的实例,但是构造器的返回值是隐式的。)

4)在构造其中中this和super只能选其一,不能同时出现在同一个构造其中,而且二者的位置都是构造器的第一行。

5)如果子类的构造器没有显示地调用超类的构造器,则将自动地调用超类默认(没有参数)的构造器。如果此时超类没有默认的构造器,则Java编译器将报告错误.一般无参构造器为缺省的构造器,当我们写一个没有构造器的类,编译的时候,编译器会自动加上一个不带参数的构造器。但是类中有构造器,编译器就不会再自动给加上一个不带参数的构造器,所以我们在编程的时候要记得把缺省的构造器写上,以防子类调用。

6)其他的构造器也能使用super或者this,调用成一个递归构造链,最后的结果是父类的构造器(可以是多层级的父类构造器)总是在子类的构造器前执行,递归的调用父类构造器

关于this关键字:

 

 

this关键字是一个对象的默认引用,它总是指向调用该方法的对象。 如果在static 修饰的方法中使用 this 关键字,则这个关键字将无法指向合适的对象。所以 static 中不能使用 this 引用。

 

 

关于变量:

 

 

1、成员变量:分为实例属性 ( 需要实例化后才加载存放在堆中 )和类属性 ( 程序一加载时 , 就初始化存放在栈中 );其中类属性从类的准备阶段开始存在直到系统完全销毁这个类,类属性的作用域与这个类的生存范围相同,实例属性则是从这个类的实例创建开始存在,直到系统完全销毁这个类。

2、局部变量:存放在方法的栈内存中分为形参、方法局部变量、代码块局部变量。

过多使用成员变量的缺陷:

增大了变量的生存空间,这将导致更大范围的系统开销;扩大变量的作用域这将不利于提高程序的内聚性。


关于访问控制符:

 

 

private :同一个类

default:同一个类、同一个包

protected:同一个类、同一个包、子类中

public:全局范围内。

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值