Java面向对象基础(一)

书接上文 , 关于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()
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值