类的设计与实现(第一部分)

类和对象

类和对象的概念

对象的实质是属性和行为。
类是描述一组有相同特征的(属性)和相同行为(方法)的对象的集合。

类和对象的而关系

类是构造面向对象程序的基本单位,是抽取了同类对象的 共同属性和方法所形成的对象或实体的“模板”,而对象是现实世界中的实体的描述。类是对象的模板。对象是类的实例。

类的定义

成员变量

	根据定义变量位置的不同,可以将变量分为两大类:
	成员变量(存在于堆内内存中,和类一起创建)
	局部变量(存在于栈内存中)。
	二者的运行机制存在较大的差异。

成员变量是定义在类中,方法体之外的变量。二这种变量会在创建对象的时候自动出事化。成员变量可以被类中的方法,构造方法和特定类的语句块访问。

public class Person{
	public String pid;//成员变量
	public String name;//成员变量
	public int age;//成员变量
public static void main(String[]args){
	Person p1 = new Person();
	p1.pid ="1145141919514";
	p1.name ="浩二";
	p1.age ="24";
	System.out.println( "p1的id:"+p1.pid+"姓名"+p1.name+"年龄"+p1.age);
	}
}

当程序执行“Person p1 = new Person();”语句时,若这行代码是第一次使用Person类,则系统通常会在第一次使用Person类时加载这个类,并初始化这个类,然后为该类成员分配内存空间。若成员变量为String类型,则被初始化为null,如果为Int类型,则被初始化为0。

成员方法

在Java中,方法只能作为类的成员,称为成员方法,
成员方法描述对象所具有功能或行为,是具有某种相对独立功能的程序模块,起作用主要是操作类自身属性。
大多数情况下,程序的其他部分都是通过类的方法和其他类的实例进行交互的。
成员方法根据有无返回值和有无形式参数划分为四种:
无参无返回,无参有明确返回带,带参无返回,带参有明确返回,以上四种方法
// 四种方法
class Persoon{
	public String pid;
	public String name;
	public int age;
	//无参无返回
	public String monika(){
		Systen.out.println("this is monika")
	}
	//无参有明确返回值
	public String 114514(){
		return"先辈"
	}
	//带参无返回
	public void getSalary(float basicSalary,float moneyAward){
		float salary = basicSalary+moneyAward;
		System.out.println("我的工资是"+salary);
	}
	//带参有明确返回值
	public float purchase(String gongsi,float money){
		System.out.println("我在"+gongsi+"得到了"+salary)
		return salary
	}

构造方法

在Java中,对象的成员在被使用前都必须先设置初值,Java提供了为类的成员变量赋初值的专门方法——构造方法。
构造方法是一种特殊的方法,他是一个与类同名、没有返回值、也不需要void 的方法。对象的创建通过构造方法来完成。当类实例化一个对象是会自动调用构造方法。新建对象是,都是用构造方法进行实例化的。
例如:

Test test = new Test("a");

其中,Test(“a")就是构造函数,“a”为构造方法的实际参数。
假如程序中没有定义任何构造方法,则系统会定义一个不带任何参数的构造方法,它被称为默认构造方法、
子类存在隐含方法super()如果子类重写构造函数也隐含调用super()
构造方法也被分为两种:无参构造方法和有参构造方法。

public class{
	public startic void main(String[]args){
	Person p1 = new Person();
	p1.pid = "1145141919514";
	p1.name ="先辈";
	}
}
class Person{
	public String pid;
	public String name;
//无参构造方法
	public Person(){
	pid="5001313155"
	bane="法外狂徒张三"
	}
//有参构造方法
	public Person(String pid,String name){
	super();
	this.pid=pid;
	this.name=name;
	}

对象的创建

对象的创建及初始化

在Java中,一个对象在可以被使用之前必须要被正确地初始化,
这一点是Java规范规定的。在实例化一个对象时,JVM首先会检查相关类型是否已经加载并初始化。
在Java中,最常见的创建对象的方法就是使用new关键字来调用一个类的构造函数,
以此来显式地创建对象。

例如:

Person p1 = new Person();

也可以利用有参的方法

Person p2 = new Person("1145141919514","田所浩二","24""学生");

方法的调用

Jave的方法定义好了之后,需要进行方法的调用,通常有两种调用格式。

单独调用

方法名称(参数);

p1.work();
p1.workovertime(4)

现有语句已经完成了方法的调用,若需要输出结果,则需要在单独调用的前面加上一个System.out.println()

System.out.println(p1.work)
System.out.println("我今天加班了"+p1.workovertime+"个小时")

赋值调用

数据类型 变量名称 = 方法名称(参数)
过程包括:
1.调用方法。
2.执行方法体。
3.返回值回到方法的调用出,赋值给变量result。

public class 114514{
	public Static void main(String[]args){
	int result = RectangleArea.getArea(13,4);//赋值调用
	System.out.println("面积为"+result);
	}
}
class RectangleArea{
	public static int getArea(int w,int h){
		System.out.println("计算矩形面积");
		int area = w*h;
		return area;
	}
}

this 关键字

this关键字是Java常用的关键字,可用于任何实例方法内,可指向当前对象,也可指向对其调用当前方法,或者在需要当前类型对象引用时使用。
此外,当一个类的属性名与访问该属性的方法参数名相同时,则需要使用this关键字来访问类中的属性,以区分类的属性和方法中的参数。

static 关键字

static 关键字主要用于内存管理。它主要在成员变量、成员方法、块和内部类中使用。static 关键字属于类,但不是类的实例。

修饰成员变量

static 最常用的功能就是修饰累的属性和方法,让他们成为类的成员属性和方法,通常将用stratic 修饰的成员成为类的成员或者静态成员。相对而言,非静态的对象的属性和方法就叫实例成员或者非静态成员。

修饰成员方法

static 的另一个作用,就是修饰成员方法。相比于修饰成员属性,修饰成员方法对于数据的存储并不会产生多大的影响,因为方法本来就是存放在类的定义当中的。static修饰成员方法的最大作用,就是可以使用“类名,方法名”的方式来操作方法,避免了要先创建对象的繁琐和资源消耗

对象的生命周期

通常来讲,Java对象的生命周期包含了Java类的初始化、对象的创建与初始化、对象的销毁等主要阶段。

Java类的初始化

静态代码块和静态属性(也就是static 修饰的成员变量)在类第一次被真正使用是,JVM会对其按照出现的顺序执行初始化,而且在该类初始化之前,他的直接父类会先被初始化。

对象的创建与初始化

创建对象的方式有以下几种:
1.用new语句调用构造方法来创建.
2.使用反射,调用java.lang,Class或java.lang.reflect.Contructor的newInstance()实例方法来创建。
3.调用对象的clone()方法来创建
4.使用反序列化手段,调用java.io.ObjetInputStream对象的readObject()方法来创建。
在Java中一般都使用new语句调用构造方法来实例化对象:

Person p1 = new Person();

对象的销毁

Java自带垃圾回收机制,会自动识别内存中不在会被使用的对象并将其销毁,释放内存。
finalize()的使用:
在Java中该方法告诉程序当满足一个特定的条件时,就释放对象。例如文件流,最终需要将流关闭,才能实现内存的释放。
除此之外,Java提供了System.gc()强制启动垃圾回收器

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值