书接上文 , 关于Java的注释问题
// 普通注释(绿色)
// 多行注释(绿色)
/***/ 文档注释 , 三个 * 的 (一般用于解释函数/变量的作用,鼠标移到变量/函数上时可以显示,增加可读性)
面向对象基础
如何创建一个对象? new关键字,
EG : 类名 对象名 = new 类名();
(1)类的相关问题:
一.Java的类占内存嘛? 占内存的,这个与C++不同 ,C++的类是不占内存的
原因? 因为Java的类 class ,是Class类的对象,当然是占内存的
二. Java的类如何声明比较恰当?
类的行为要与类的特点匹配 , 比方说 , 人类类中的方法,必须是与人类相关的, 这样写起来才不会乱
三.类的初始化过程(new的过程)
①JVM开始工作,找到 目标 .class 文件 , classloder 开始工作
②类装载的时候 , static部分率先开始初始化
③ new出一个对象,堆上开辟空间
④ 所有成员变量开始初始化 赋上相应的值
⑤执行构造函数
四.类的实例化/调用顺序
先实例化父类,再实例化子类
先调用父类方法,再调用子类方法
五.注意事项
类的方法不能直接调用实例方法/实例变量
就是在类外不能调用类内的方法
(2)static关键字相关问题:
1.static修饰的成员变量是各个对象公有的, 可以直接被类名引用
static int a=1;
Human.a;
2.static 只能作成员变量不能做局部变量
3.static关键字修饰的成员变量,由该类的所有的对象所共享,独立的开辟空间.
4.在类装载时,static部分先开始初始化
5.static修饰的变量又叫类成员变量
static修饰的函数 / 为什么主函数用static修饰: 可以用类名.方法名调用,省去了生成对象的步骤,所以主函数都要static修饰
(3)成员变量与局部变量问题:
方法(函数)内的变量/参数 : 是局部变量
成员变量在类内都是有效的
局部变量作用域内(也就是在成员方法内)使用成员变量 : 要用this关键字(防止重名引起歧义)
(4)重载与重写
重载: 方法名相同,参数个数,类型,顺序中至少有一个不同
PS: 仅返回值类型不同不能叫重载
原因: 在调用方法时, 我们是不写类型名的,所以系统不知道返回值类型是哪种
重写: 子类对父类方法的重写, 方法的参数个数,类型,顺序,方法名都要完全相同
重写的规则 : 子类对父类方法的重写, 方法的参数个数,类型,顺序,方法名都要完全相同
不得修改返回值类型
子类不得降低父类继承方法的访问权限
(5)构造函数与垃圾回收
构造函数名与返回值类型名完全相同且无返回值类型 , 用于对成员变量的初始化
Java的垃圾回收机制我准备单独写一篇,这里不做赘述
(6)访问权限相关
① 从大到小依次为 public , protected , 默认(友好的,就是啥也不写) , private
不同包的子类?? : 在不同包下 , 该class的子类
以protected为例
public class test01 {
protected void display() {
System.out.println(1);
}
public static void main(String[] args) {
}
}
public class test02 extends test01 {
public static void main(String[] args) {
test02 t2 = new test02();
t2.display();//test02 的实例化对象t2 可以访问test01的方法display()
}
}