java类和对象——如何面向对象以及类的定义、使用和实例化
1.面向对象的初步认识
1.1 什么是面向对象
Java是一门纯面向对象的语言(Object Oriented Program,继承OOP),在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。
面向对象的优点: 用面向对象的思想来涉及程序,更符合人们对事物的认知,对于大型程序的设计、扩展以及维护都非常友好
1.2 面向对象与面向过程
举一个洗衣服的例子:
这是传统洗衣服的步骤
传统洗衣服的方式:注重的是洗衣服的过程,少了一个环节可能都不行。
- 不同衣服洗的方式,时间长度,拧干方式都不同,处理起来就比较麻烦。
- 如果将来要洗鞋子,那就是另一种放方式
- 如果按照该种方式来写代码,将来扩展或者维护起来会比较麻烦。
现代洗衣服的方式:
总共有4个对象:人、衣服、洗衣机、洗衣粉。
- 以面向对象方式来进行处理,就不关注洗衣服的过程,具体洗衣机是怎么来洗衣服,如何来甩干的,用户不用去关心。
- 只需要将衣服放进洗衣机,导入洗衣粉,启动开关即可,通过对象之间的交互来完成的。
【注意事项】 面向过程和面相对象并不是一门语言,而是解决问题的方法,没有那个好坏之分,都有其专门的应用场景。
下面再来举一个例子来具体描述什么是面向对象,什么是面向过程。
买手机的例子:
【面向过程】
- 比如我要一个买手机。
- 首先我在网上查看要买哪个型号的手机。
- 选择手机的参数。
- 选好心仪的手机,然后下单。
- 手机到了,取快递。
- 激活,使用。
强调的是买手机的过程,买手机用了几步,并且任何一个步骤出了问题都会影响到使用使用手机。
【面向对象】
- 我要买手机
- 让朋友帮我买手机,他来完成(上网查看、选参数、下单、取快递、激活使用)
- 最后拿给我使用。
我是要使用手机,根本不需要关心买手机的步骤,手机拿回来后,我来使用就好了。
2.类的定义和使用
2.1 简单认识类
类是用来对一个实体(对象)来进行描述的,主要描述该实体(对象)具有哪些属性(外观尺寸等),哪些功能(用来干啥),描述完成后计算机就可以识别了。
//student是要描述的对象 class student { //对象的属性 public int age;//年龄 public String name;//姓名 public String telephone;//电话 //对象的行为 public void eat(){ System.out.println("吃饭"); } public void sleep() { System.out.println("睡觉"); } public void beatPeas() { System.out.println("打豆豆"); } } public class ClassUse { public static void main(String[] args) { } }
2.2 类的定义格式
先来定义一个洗衣机类:
类至少有两部分组成:一个是属性、一个是行为。
- 属性叫做成员属性(有的书籍叫字段)。
- 方法叫做成员方法(有的书籍叫方法)。
//class - 类名 -> 大驼峰 class WashMachine{ //属性【字段】 -> 成员属性 public String brand; // 品牌 public String type; // 型号 public double weight; // 重量 public double lenght; // 长 public double width; // 宽 public double height; // 高 public String color; // 颜色 public int price;//价格 //行为【方法】 -> 成员方法 public void washClothes(){ // 洗衣服 System.out.println("洗衣功能"); } public void dryClothes(){ // 脱水 System.out.println("脱水功能"); } public void setTime(){ // 定时 System.out.println("定时功能"); } } public class ClassUse { public static void main(String[] args) { } }
【注意事项】
- class 后面书写的是类名,类名要采取大驼峰定义(即单词首字母大写)。
- 方法名要使用小驼峰(即方法名单词首字母小写,其余单词首字母大写)。
- 成员前写法统一为public,后面会详细解释。
- 此处写的方法不带 static 关键字,后面会详细解释。
3.课堂练习
3.1 定义一个猫类
//定义一个猫类 class Cat{ public String name;//名字 public String color;//颜色 public int age;//年龄 public void Purrpurr() {//咕噜噜噜 System.out.println("咕噜咕噜"); } public void Meow() { //喵喵叫 System.out.println("喵喵"); } public void Wagtail() { //摇尾巴 System.out.println("摇尾巴"); } } public class ClassUse { public static void main(String[] args) { } }
3.2 定义一个女朋友类
//定义一个女朋友类 class Grilfriend{ public String name;//名字 public int weight ;//体重 public int age;//年龄 public String telephone;//电话 public int height;//身高 public void Kiss() {//亲亲 System.out.println("亲一个"); } public void Hug() { //抱抱 System.out.println("抱一个"); } public void Coquetry() { //撒娇 System.out.println("撒娇"); } } public class ClassUse { public static void main(String[] args) { } }
【注意事项】
- 一般一个文件当中只定义一个类
- main方法所在的类一般要使用public修饰(注意:Eclipse默认会在public修饰的类中找main方法)
- public修饰的类必须要和文件名相同
- 不要轻易去修改public修饰的类的名称,如果要修改,**通过开发工具修改。1
3.类的实例化
3.1 什么是实例化
- 定义了一个类,就相当于在计算机中定义了一种新的类型。
- 用类类型创建对象的过程,称为类的实例化
//定义一个女朋友类 class Grilfriend{ public String name;//名字 public int weight ;//体重 public int age;//年龄 public String telephone;//电话 public int height;//身高 public void Kiss() {//亲亲 System.out.println("亲一个"); } public void Hug() { //抱抱 System.out.println("抱一个"); } public void Coquetry() { //撒娇 System.out.println("撒娇"); } } public class ClassUse { public static void main(String[] args) { //实例化一个女朋友对象 Grilfriend grilfriend = new Grilfriend();//这个时候有了一个真正的grilfriend grilfriend.name = "小美"; grilfriend.age = 19; grilfriend.telephone = "123456789"; grilfriend.weight = 56; grilfriend.height = 170; System.out.println(grilfriend.name); System.out.println(grilfriend.age); System.out.println(grilfriend.telephone); System.out.println(grilfriend.weight); System.out.println(grilfriend.height); //通过.来访问方法 grilfriend.Kiss(); grilfriend.Hug(); grilfriend.Coquetry(); } }
class Cat{ public String name;//名字 public String color;//颜色 public int age;//年龄 public void Purrpurr() {//咕噜噜噜 System.out.println("咕噜咕噜"); } public void Meow() { //喵喵叫 System.out.println("喵喵"); } public void Wagtail() { //摇尾巴 System.out.println("摇尾巴"); } } public class ClassUse { public static void main(String[] args) { //实例化一个Cat对象 Cat cat = new Cat();//这个时候有了一个真正的Cat Cat cat1 = new Cat();//小猫1号 Cat cat2 = new Cat();//小猫2号 Cat cat3 = new Cat();//小猫3号 cat.name = "小栗"; cat.age = 3; cat.color = "黑色"; System.out.println(cat.name); System.out.println(cat.age); System.out.println(cat.color); //通过.来访问方法 cat.Purrpurr(); cat.Meow(); cat.Wagtail(); } }
每一只小猫都可以有它自己的名字和颜色。
【注意事项】
- new 关键字用于创建一个对象的实例。
- 使用 . 来访问对象中的属性和方法。
- 同一个类可以创建多个实例。
3.2 类和对象的说明
- 类只是一个模型一样的东西,用来对一个实体进行描述,限定了类有哪些成员。
- 类是一种自定义的类型,可以用来定义变量。
- 一个类可以实例化出多个对象,实例化出的对象 占用实际的物理空间,存储类成员变量。
做个比方。类实例化出对象就像现实中使用建筑设计图建造出房子,类就像是设计图。 只设计出需要什么东西,但是并没有实体的建筑存在,同样类也只是一个设计,实例化出的对象才能实际存储数据,占用物理空间
Footnotes
- 注脚的解释 : 如果要修改类的名称,要使用idea来更改。
右击要更改的文件,选中Refactor,再选中Rename File... 修改完后,点击Refactor确认修改。