面向对象基础

面向对象

面向对象程序编程:只是一种编程的思维方式

类 : 是对一类事物的公共属性(变量) 和公共行为(方法) 的描述
对象 : 具体存在并且唯一的一个事物

现实生活中: 先有对象再有类
java中: 先有类后有对象

类和对象的关系:
类是对象的抽象 对象是类的实例

创建类的语法:
class 类名{

成员属性;

成员方法;

}

通过类创建对象的语法:

类名 变量名 = new 类名();

如何方法对象的成员?
访问成员属性: 变量名.属性名
成员方法 : 变量名.方法();

匿名对象

没有任何引用类型变量指向的对象就称为匿名对象

用法:new 类名();
1、匿名对象一般都是用来作为实参传递
2、用来访问对象的成员

好处: 尽早的释放内存空间
注意: 两个匿名对象永远都不可能相等,因为匿名对象是用new创建的,用new创建的对象储存在堆内存中不同的空间地址

构造方法

构造方法用来初始化对象,创建对象时,默认都会调用构造方法
构造方法分为无参构造方法和有参构造方法

语法:
无参构造方法:权限修饰符 类名(){ }
有参构造方法:权限修饰符 类名(数据类型1 变量1,数据类型2 变量2,…){ }

格式要求:
1、构造方法必须与类名相同
2、构造方法不能有返回值类型
3、构造方法允许重载

不同点普通方法构造方法
调用方式普通方法可以直接使用对象名调用构造方法不能通过对象调用,而是JVM自动调用的
命名方式普通函数可以任意命名,不推荐使用类名构造方法必须与类同名
返回值类型普通方法可以用返回值类型构造方法不能有返回值类型

如果想对对象进行统一初始化,无参和有参构造方法,就使用构造代码块

Class Baby{
	String name;
	String sex;
	int age;
	{//这就是构造代码块
		System.out.println("哭");
	}
	public Baby(){
		System.out.println("无参构造方法");
	}
	public Baby(String n,String s,int a){
		System.out.println("有参构造方法");
		name=n;
		sex=s;
		age=a;
	}
}

构造代码块的原理: 本质是JVM在编译时会将构造代码块中的代码拷贝到各个构造方法中,并且是在构造方法的最前面

注意:如果创建一个类,没有创建构造方法,JVM会默认给我们创建一个无参构造方法,如果已经创建了构造方法,那么JVM就不会自动创建无参构造方法

成员变量和局部变量

成员变量:成员变量指的是类范围里定义的变量,也就是所说的属性
局部变量:指的是一个方法内定义的变量

成员变量和局部变量的区别:
1、声明位置不同
成员变量在类之内 方法之外声明
局部变量在方法内部或者形参列表中声明

2、作用域不用
成员变量的作用域在整个类中
局部变量的作用域应该在它所属的花括号中

3、初始化不同
局部变量必须手动初始化才能使用
成员变量会自动初始化

4、存储位置不同
局部变量都是存储在栈内存中
非静态的成员变量都是存储在堆内存中

5、生命周期不一样
局部变量从声明时存在于内存中,用完立即消失
成员变量在创建对象时存在于内存中,用完不会立即消失,而是等待垃圾回收器回收

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值