面向对象编程1
前言
面向对象是现代编程语言的一个重要的标志,就Java来说,零基础学习编程的时候面向对象是一个重要的突破和转折,有些同学在学习面向对象的时候呢比较吃力,出现了跟不上,不理解的情况,而另一些同学,则通过面向对象内容的学习,更好的理解了编程,体会到了编程设计的魅力;
总之就是两极分化比较大,那么我注重关注的是如何让零基础的学员或者学习比较慢的同学能学的懂,学的比较开心,用最简单的方式去介绍面向对象,用最直观的方式告诉学员如何去使用面向对象。
在编程的世界里,谁都当过菜鸟,不管哪个高手和老师也都是从菜鸟阶段走过来的,所以我希望用最朴实和最有用的语言文字来带领零基础学习的同学进入我们Java编程的大门,开启面向对象之旅……
常用关键词来个普及:
- 类的中的成员:
- 属性描述实体可以量化的特征。
- 使用方法描述实体具体的行为。
- 类的封装:
- 对象同时具有属性和方法两项特性
- 对象的属性和方法通常被封装在一起,共同体现事物的特性, 二者相辅相承,不能分割
- 什么是类:
- 类是模子,确定对象将会拥有的属性方法
- 类是对象的类型
- 什么是对象
- 对象是类的具体实现
- 类和对象的区别:
- 类是抽象的概念,仅仅是模板
- 对象是一个具体实体
- 类封装代码,对象封装数据
- 定义一个类的步骤是:
- 定义类名
- 编写类的属性
- 编写类的方法
代码了示例相结合
同学们可以打开Eclipse来跟练
- 创建一个学校类,创建学校类对象
-
public class School { //属性 /** * 中心名称 */ String name; /** * 教室数目 */ int classNum; /** * 机房数目 */ int labNum; //方法 /** * 展示中心信息 */ public void showInfo(){ System.out.println(name+"ETC,教室有"+classNum+"个,机房有"+labNum+"个"); } }
-
- 创建学校的测试类,在测试类中创建学校对象,并给学校对象赋值,显示
-
public class SchoolTest { public static void main(String[] args) { School school = new School();//创建自定义类对象 school.name = "西安"; school.classNum = 10; school.labNum = 20; //显示学校的信息 school.showInfo(); School school2 = new School(); school2.name = "南京"; school2.classNum = 20; school2.labNum = 20; school2.showInfo(); } }
-
- 创建一个学生类:
-
/** * @author Johnny * @category 学生类 */ public class Student { String name; int age; String[] classes; String hobby; @Override public String toString() { return "姓名:"+name+"\t 年龄"+age+"\t 选修课"+Arrays.toString(classes)+"\t 兴趣:"+hobby+"\t"; } }
-
- 创建学生测试类
-
// 创建学生对象 Student s1 = new Student(); s1.name = "王乐泉"; s1.age = 18; s1.classes = new String[3]; s1.classes[0] = "Java"; s1.classes[1] = "SQL"; s1.classes[2] = "Linux"; s1.hobby = "电影"; System.out.println(s1);//直接输出该变量,因为该类中,重写了toString方法
-
- 创建音乐类
-
public class Music { /** * 名称 */ String name; /** * 类型 */ String type; /** * 节奏 */ String rhythm; /** * 长短 */ int time; /** * 内存大小 */ double memorySize; @Override public String toString() { return "歌曲名称:"+name+"\t 该歌曲为:" + type + "类\t节奏为:" + rhythm + "\t时长是:" + time + "min \t 内存大小为:" + memorySize + "M"; } }
-
- 创建手机类
-
public class Phone { /** * 手机品牌 */ String brand; /** * 手机价格 */ int pirces; /** * 手机颜色 */ String color; /** * 手机内存 */ int memory; /** * 音乐 */ Music[] Musices; /** * 播放歌曲 */ public void playMusic() { System.out.println(this.toString());// 输出该手机的基本信息 System.out.println("手机开始播放了....."); for (int i = 0; i < Musices.length; i++) { Music music = Musices[i]; System.out.println(music); } System.out.println("播放了结束........"); } @Override public String toString() { return "该手机的品牌为:" + brand + "\t 价格为:" + pirces + "元 \t 颜色:" + color + " \t 内存空间为" + memory + "G"; } }
-
- 创建音乐手机测试类
-
public class PhoneTest { public static void main(String[] args) { // 创建自定义类对象 Phone p1 = new Phone(); p1.brand = "apple"; p1.pirces = 6599; p1.color = "土豪金"; p1.memory = 256; // 创建歌曲 Music m1 = new Music(); m1.name = "月亮之上"; m1.type = "流行"; m1.rhythm = "舒缓"; m1.time = 3; m1.memorySize = 3.5; // 创建歌曲 Music m2 = new Music(); m2.name = "自由飞翔"; m2.type = "流行"; m2.rhythm = "动感"; m2.time = 5; m2.memorySize = 4.8; //手机下载歌曲 p1.Musices = new Music[]{m1,m2}; // 播放歌曲 p1.playMusic(); } }
-
-
充电器类,完成测试类
-
public class Charger { String name; String type; int voltage;// 电压 /** * 充电 */ public void charging(Phone phone) { System.out.println(type + "类型" + name + "的充电器,正在给" + phone.brand + ",型号是:" + phone.type + "手机充电中..."); for (int i = phone.quantity; i < 101; i++) { try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("当前电量:"+i+"%"); } System.out.println(phone.type+"充电完毕......."); } }
- 修改手机类
-
public class Phone { /** * 手机品牌 */ String brand; /** * 手机型号 */ String type; /** * 电量 */ int quantity; /** * 手机价格 */ int pirces; /** * 手机颜色 */ String color; /** * 手机内存 */ int memory; /** * 音乐 */ Music[] Musices; /** * 播放歌曲 */ public void playMusic() { System.out.println(this.toString());// 输出该手机的基本信息 System.out.println("手机开始播放了....."); for (int i = 0; i < Musices.length; i++) { Music music = Musices[i]; System.out.println(music); } System.out.println("播放了结束........"); } @Override public String toString() { return "该手机的品牌为:" + brand + "\t 价格为:" + pirces + "元 \t 颜色:" + color + " \t 内存空间为" + memory + "G"; } }
-
电池&手机的测试类
-
public static void main(String[] args) { // 创建自定义类对象 Phone p1 = new Phone(); p1.brand = "iphone"; p1.type = "iphonex"; p1.quantity = 81; p1.pirces = 6599; p1.color = "土豪金"; p1.memory = 256; //创建充电器对象 Charger c1 = new Charger(); c1.name = "苹果专用充电器"; c1.type = "无线快充"; c1.voltage = 5;//5v c1.charging(p1); }
-
-
作业:猫捉老鼠类
-
public class TomcatAndJerry { public static void main(String[] args) { //创建一个老鼠 Mouse m1 = new Mouse(); m1.name = "Jerry"; m1.speed = 5; //叔叔 Mouse m2 = new Mouse(); m2.name = "Jerry的叔叔"; m2.speed = 2; //创建一个猫 Cat cat = new Cat(); cat.name = "Tom"; cat.speed = 5; //调用方法 String s1 = cat.catchMouse(m1); System.out.println(s1); String s2 = cat.catchMouse(m2); System.out.println(s2); } } // 猫类 class Cat { String name; int speed; public String catchMouse(Mouse mouse){ if(this.speed>mouse.speed){ return this.name+"把"+mouse.name+"捉到了"; }else{ return this.name+"没有捉到"+mouse.name; } } } // 老鼠类 class Mouse { String name; int speed; }
-
总结:
- 什么是类?
- 类是模板,确定对象的属性和方法。
- 什么是对象?
- 对象就是类的实例。
- 类和对象的区别和联系
- 类是抽象的概念,对象是具体的实例。
- 类封装代码,对象封装数据。
- 对象是以类为模板开始创建。
- 类就是对象的模板。
- 如何定义一个类、类的属性和方法?
- 使用关键字class定义类
- 类的属性:访问修饰符,属性类型,属性名称。
- 类的方法:
- 访问修饰符,
- 返回值类型,
- 方法名称,
- 形参列表,
- 方法体。
- 如何创建类的对象?
- 使用关键字new
- toString()方法的优点是什么?
- 通过输出变量名称,就可以得到对象当中的所有信息。
- 数据类型有哪两种?区别是什么?
- 基本数据类型
- 引用数据类型
- 区别:
- 基本数据类型是:值传递
- 引用数据类型是:引用传递
未完待续,下一篇文章见。