欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > 零基础Java第十期:类和对象(一)

零基础Java第十期:类和对象(一)

2024/10/26 15:43:53 来源:https://blog.csdn.net/2401_85198927/article/details/143218894  浏览:    关键词:零基础Java第十期:类和对象(一)

目录

一、拜访对象村

1.1. 什么是面向对象 

1.2. 面向对象与面向过程 

 二、类定义和使用

2.1. 类的定义格式 

2.2. 类的定义练习

三、类的实例化

3.1. 什么是实例化 

3.2. 类和对象的说明

 四、this引用

4.1. 什么是this引用 

4.2. this引用的特性 


一、拜访对象村

       在之前的代码中,我们都是main()方法中执行,但这都是面向过程的。从这一起开始,博主将待大家离开过程化的编程世界,建立起自己的对象。注意:一旦进入对象村,你就再也不想回头。

1.1. 什么是面向对象 

       在对象村里面,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。 

1.2. 面向对象与面向过程 

我们拿洗衣服来举例,洗衣粉、洗衣机、人就是对象;过程如下:

 二、类定义和使用

        类是用来对一个实体(对象)来进行描述的,主要描述该实体(对象)具有哪些属性(外观尺寸等),哪些功能(用来干啥),描述完成后计算机就可以识别了。到底类和对象有什么不同呢?其实,类不是对象,却是用来创建它们的模型。类是对象的蓝图,它会告诉虚拟机如何创建某种类型的对象。根据某类创建出的对象都会有自己的实例变量。我们可以使用狗类创建出年龄、性别、姓名。

2.1. 类的定义格式 

 语法规则:类名一般采用大驼峰,字段或成员属性定义在方法外部、类的内部。成员方法和成员变量可以细分为两种,静态与非静态的。public可有可无。

public class 类名{字段/成员属性;成员方法;

我们拿洗衣机举例,

public class WashMachine{public String brand;   // 品牌public String type;    // 型号public double weight;  // 重量public double length;  // 长public double width;  // 宽public double height;  // 高public String color;   // 颜色

2.2. 类的定义练习

(1)定义一个购物车类 

public class ShoppingCart {public String cartContents;//定义购物车内容public void addToCart(){System.out.println(cartContents+"把购买的物品添加进购物车");}
}

 (2)定义一个按钮类

public class Button {public String label;//定义标签public String color;//定义颜色public void SetColor(){System.out.println("The button is" + color);}public void setLabel(){System.out.println("The button is"+label);}
}

三、类的实例化

3.1. 什么是实例化 

       定义了一个类,就相当于在计算机中定义了一种新的类型,与int,double类似,只不过int和double是java语言自 带的内置类型,而类是用户自定义了一个新的类型,比如上述的:ShoppingCart类和Button类。用类类型创建对象的过程,称为类的实例化,在java中采用new关键字,配合类名来实例化对象。下面我们来进行一个电影类的实例化:

public class Movie {String title;//定义标题String genre;//定义题材int rating;//定义评级public void playIt(){System.out.println(title+""+genre+""+rating);}
}
public class MovieTestDrive {public static void main(String[] args) {Movie one =new Movie();one.title="Gone with the Stock";one.genre="Tragic";one.rating=-2;one.playIt();Movie two =new Movie();two.title ="Lost in Cubicle Space";two.genre ="Comedy";two.rating =5;two.playIt();}
}

 

那么类的实例化在栈和堆上是如何开辟内存空间的:

       one先在栈上开辟一块内存空间,栈上的地址指向堆里面,此时我们创立的属性title、genre、rating、就会在堆上进行赋值。

        对于类的成员变量来说,每一个成员变量都有一个默认值,引用类型为null,基本类型为对应的默认类型。 

3.2. 类和对象的说明

       到底类和对象两者之间有什么不同呢?首先,类不是对象,是用来创建它们的模型。类是对象的蓝图,它会告诉虚拟机如何创建某种类型的对象。根据某类创建出的对象都会有自己的实例变量 。

       对象可以执行的动作叫方法。在设计类时,我也会同时设计出操作对象数据的方法。举例来说,闹钟对象会有个变量来保存时间,且会有GetTime和SetTIme来保存该时间。

public class Alarm {public int AlarmTime;//定义时间public String AlarmMode;public void GetTime(){System.out.println("get the time");}public void SetTime(){System.out.println(" set the time");}
}

 四、this引用

4.1. 什么是this引用 

先看一个日期类的例子: 

public class Date {public int year;public int month;public int day;public void SetDate(int y,int m,int d){year=y;month=m;day=d;}public void PrintDate(){System.out.println(year+"年"+month+"月"+day+"日");}public static void main(String[] args) {Date date = new Date();date.SetDate(2005,3,13);date.PrintDate();System.out.println("=========");Date date1 =new Date();date1.SetDate(2024,10,25);date1.PrintDate();}
}

 

此时博主要给出两个问题去思考一下:

1、每个方法只有一个,那么该方法怎么知道给哪个成员变量赋值?

2、当修改SetDate之后,赋值失败

       我们先看第二个问题,当我们修改了之后,就会出了两个形参,相当于形参自己给自己赋值。可我们有时候无法避免命名相同,此时就可以通过this来解决。

public void SetDate(int year,int month,int day){year=year;month=month;day=day;
}
public void SetDate(int year,int month,int day){this.year=year;this.month=month;this.day=day;
}

       那么第一个问题呢?this表示当前对象的引用,在方法的内部还存在着一个隐藏的this,编译器自动接收,谁调用SetDate谁就会把引用传给this,它携带的信息就会包含我要修改的成员变量。

4.2. this引用的特性 

1. this的类型:对应类类型引用,即哪个对象调用就是哪个对象的引用类型 

2. this只能在"成员方法"中使用

3. 在"成员方法"中,this只能引用当前对象,不能再引用其他对象 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com