Java中传值与传址、static、继承、重写、super

Ctrl + Alt +S:快速产生get与set方法、构造方法等。
栈:一般是方法调用时进入的区域,方法中永远使用与方法最近的参数。

传值与传址

指的是方法调用时的参数传递。
a.传值:方法调用时传递的是基本类型;传的是变量的副本,不会影响原始变量数据。
b.传址:方法调用时传递的是引用类型;传的是地址,只要该地址中的任何成员变量被改变,原始变量数据就会改变,就会影响外层类型。

static

内存中被GC回收时间由短到长的顺序如下:
栈—>堆—>方法区
这里写图片描述
static修饰的属性或方法在内存中独占空间,并且此空间被堆中new出的对象共享,即堆中任何对象对属性的操作都会影响后面其它对象对此值数据的访问。
这里写图片描述
访问修饰符:public 、private、default、protected
类的访问修饰符:public 默认(不写)
修饰符:final、static、abstract

a. static修饰属性

注意:修饰符可以有多个;static尽量不要和private一起使用(static目的在于用类名调用)
对象属性:通过对象调用的属性;
类属性(static修饰):直接通过类名调用,无需创建对象
public static void setSex(String sex) {
Student.sex = sex;
}

b.static修饰方法

类方法。
1. 直接通过类名调用;
2. 静态方法中不能有非静态的属性,非静态的方法。
3. 静态方法中不能有this关键字;
this指代当前类的对象,与static修饰的在内存中属于不同的空间(方法区与堆)。
4.在开发中一般作为工具类使用(使用技巧)。

c.static修饰代码块

定义:{ }
种类:
1.普通代码块定义在方法中 注意其作用域(结合for循环理解)
2.静态代码块(static修饰)
3.构造代码块在类之内方法之外
4.同步代码块(线程)
使用:构造代码块、静态代码块:完成一些初始化工作。
执行顺程序:main()—>静态代码块—>构造块—>构造方法—>普通方法—>普通代码块
注:据此推出:类中的构造方法不一定是最先执行的

继承

打印对象的时候会默认调用该类的toString(),未定义toString()则打印地址。若定义了toString()则会返回其中返回的内容。
格式:
public class 子类 extends 父类{
//子类具备父类中属性和方法
}
特点:
1. java继承只能是单继承。父类可以被多个子类继承,但一个子类只能继承一个父类。
2. 继承可以实现多层继承(implements)。
3. 父类的私有化属性和方法不能被继承。

重写(override)(覆盖)

发生在子类中。
定义:子类中存在与父类中方法返回值相同、方法名相同、参数相同的方法。
注意:
1.子类重写的访问修饰符不能小于父类
2.父类的方法不能满足子类需求时使用重写。
3. 三同一大

super

属性:调用父类属性
先找本类属性,没有调用父类属性
方法:调用父类方法
先找本类方法,没有调用父类方法
构造方法:super() 父类无参构造方法

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值