Java学习记录day5

类和对象的定义

类的定义

修饰符 class 类名 {
类的内容;
}
修饰符:与方法定义的中的修饰符作用一样,描述类的访问权限。静态类即被声明为static的,只有一种情况,就是静态内部类。
类名:符合驼峰命名法。

对象的定义

一个类要想进行操作,则必须依靠对象。java中类是抽象的,就像工作时对Java工程师这个职位的要求描述,是不能直接对其进行操作的。想要让这个Java工程师敲出代码,就必须招到一个具体的人,而对象就是这个具体招到的人。
对象的定义:
类名 对象名 = new 类名(实参);
然后通过操作对象来实现对类的操作。比如访问对象中的属性/方法,就是对象名.属性名/方法名:

public class Test{
	public static void main(String[] args) {
		House h;//声明一个类的变量
		h = new House();//创建实例对象
		h.kind = "别墅";
		h.Count = 3;
		h.Print();
		//匿名对象,只能用一次,用完即被释放
		new House().Print();
		//释放对象,释放后再使用就报空指针异常
		h = null;
	}
}
public class House{
	String kind ;
	int Count;
	public void Ptint(){
		System.out.println(kind + Count +"栋");
		}
}

构造方法

构造方法是类构造对象时调用的方法,用于对象的初始化工作,是实例化一个类的对象也就是new时最先调用的方法。

构造方法的定义
修饰符 类名(参数列表) {}

如果没有定义任何构造方法,系统送一个无参的构造方法,一旦定义构造方法,就不再赠送;带参的构造方法,用于给成员变量赋值。

this关键字

this引用的是当前对象。用在类的成员方法中(非静态)

  • this.成员变量/成员方法
  • this(实参) 调用构造方法:只能用在构造方法中,而且放在方法中的第一行。
public class Test{
	public static void main(String[] args) {
		House h = new House();
		h.setKind("草屋");
	}
}
public class House{
	String kind ;
	public void house(String kind){
	//表示将传入的kind的值赋予该类中的kind
		this.kind = kind;
		System.out.println(kind);
	}
	public void setKind(String kind){
		this(kind);
		System.out.println(kind);
	}
}

封装

隐藏类内一些业务的实现细节,更改成员变量、方法、类等的权限,仅提供访问的接口(方法),使只能通过接口(方法)来访问。
封装的优点:

  • 模块化,利于管理维护
  • 隐藏信息,保证信息安全
  • 代码重用,减少代码量
  • 插件化易于调试
  • 具有安全性
    缺点:会影响执行效率。

成员变量与局部变量

成员变量与局部变量的区别:

  1. 在类中的位置不同
  • 成员变量:在类中定义
  • 局部变量:在方法中定义或者方法的参数
  1. 在内存中的位置不同
  • 成员变量:属于对象,在堆内存
  • 局部变量:属于方法,在栈内存
  1. 生命周期不同
  • 成员变量:随着对象的创建而存在,随着对象的销毁而消失,简单来说就是作用在整个类中
  • 局部变量:随着方法的创建而存在,随着方法的销毁而消失,简单来说就是作用在定义的方法中,出了该方法则不能被直接调用,但可以通过方法名.变量名调用
  1. 初始化值不同
  • 成员变量:有默认的初始化值,引用类型默认null
  • 局部变量:没有默认的初始化值,必须定义,赋值,然后才能使用。
public class House{
	String kind ;//成员变量
	String kind2 = "成员变量2";
	public void house(String kind){//kind是局部变量,两者可以是同一名字,方法中使用时采用就近原则
		this.kind = kind;
		System.out.println(kind);
	}
	public void setKind(){
	//kind1是局部变量,到了该方法之外,kind1就不能直接被调用了
		kind1 = "局部变量1";
		System.out.println(kind2);//在方法中可以直接调用方法内的局部变量
	}
	System.out.println(setKind.kind1);//到了该方法之外,kind1就不能直接被调用了,只能通过这样调用,也就是说它不作用于被定义的方法之外的地方
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值