1、什么是属性?有几类属性?
属性是用于修饰或者对对象拥有的某一个基础名词,如颜色,年龄。
目前java有的是
静态属性
跟着类初始化,在所有的类的实例化对象内都可以取到,存放在方法区内。和应用程序的生命周期相同。
对象属性
跟着对象初始化,在创建的对象内才可以取到,存放在内存的堆中。随着GC的回收而销毁。
局部变量
跟着方法初始化,在方法内部才可以取到,存放在内存的栈中。当方法运行完后就会被销毁。
2、属性的修饰词
private 修饰后为私有属性,仅当前类可以使用,子类不可使用不可继承
缺省修饰 仅本类和同包下可以调用
protected 子类可以使用,同包可以使用,本类可以使用
public 所有类可以使用
3、为什么需要不同的修饰词
private 私有属性,意味着其他类不能随意的修改,要修改只能通过其他方式,如提供方法进行获取,如果说这个属性是不变的属性,而其他类有权限对其修改的话,那么意味着这个属性就会变化,如果我们只提供一个获取值的方法,那么这个就能保护好了
对于 余下的修饰符来说,也就是权限不一样,主要还是根据继承以及封装特性来进行权限的分级。
4、final 修饰的属性
final修饰的属性是不可变的属性
5、什么是方法?有几类方法?
方法就是解决问题的一种方式。传入参数,对参数处理后得到一个最终的结果,或者没有结果产生,中途对某些东西进行了修改。
目前java有的方法:
静态方法:
跟着类一起初始化,可以使用class对象来调用。
抽象方法
没有具体实现的方法,更多的是一种规范。
普通方法
普通的实现方法,处理一段逻辑。
构造方法
初始化某一类数据的方法,如类的构造方法,以及属性的构造方法
6、方法的入参
方法的入参是处理一段逻辑所需要的一系列所需。
推荐方法最多传4个入参,如果入参太多可能意味着你方法的颗粒度还太大,可能不太符合单一职责原则,对于后续维护不太友好。
方法的传参问题?都是值传递。
方法传参,参数可以是对象,那么就有一个问题,对象是有值和指针的,那么传入的参数进行了修改后,到底改的是入参的指针还是值呢?
可以分为三类:
入参为普通的数据类型,会将原有的数据复制一份传到方法内,方法修改不会造成原有数据的改变。
入参为String以及包装类,也会新建一个新的对象,因此方法修改不会造成原有数据的改变。
入参为引用类型,会复制一个新的地址传给方法,当给地址对应的对象进行修改,那么对象的值会被修改,但是如果此时如果新建一个新的对象,将新的对象赋值给入参,由于入参是复制的地址,当方法运行结束这个复制的地址引用会被删除,这样原本的对象的地址是没有变的,因此也不会指向方法内新建的对象的。所以可以说这里也是值传递,传递的是地址的值,而不是地址的引用。
7、方法的返回
方法不一定非要有返回值
如果有返回值,那么方法必须返回一个值