第十一章 类和对象

一、本章技能目标

  • 掌握类和对象

  • 理解封装

  • 会创建和使用对象 

二、内容

1 对象

  • 分类是人们认识世界的一个很自然的过程,在日常生活中会不自觉地进行分类

  • 什么是对象,对角是用来描述客户事物的一个实体

  • Java是一种面向对象的编程语言

1.1 身边的对象

  • 用向对象方法来解决问题是,首先要对现实世界中的对象进行分析与归纳,找出哪些对象与要解决的问题是相关的

  • 对象都有一些特征,这些特征是有别于其他对象

  • 所以对象由特征和操作组成

1.2 对象的属性和方法

  • 在面向对象的编程思想中,把对象的静态特征和动态特征分别称为对象属性和方法

  • 在编程中,对象的属性被存储在一些变量中,对象的行为则通过定义方法来实现

  • 对象:用来描述客观事物的一个实体,由一组属性和方法构成


1.3 封装

  • 对象同时具有属性和方法两项特性

  • 封装:就是把一个事物包装起来,并尽可能隐藏内部细节

一辆汽车,有完好的零件和特定的颜色,还应具备开动、刹车等方法行为

2 类

  • 类定义了对象将会拥有的特征(属性)和行为(方法)

        

  • 类是对象的类型

2.1 类和对象的关系


  • 类是抽象的概念,仅仅是模板 

  • 对象是一个你能够看得到、摸得着的具体实体 

3 Java是面向对象的语言

3.1 Java的类模板

语法

  1. public class  类名 {

  2.        //定义属性部分

  3.        属性1的类型 属性1;

  4.        属性2的类型 属性2;

  5.  

  6.        属性n的类型 属性n;

  7.        //定义方法部分

  8.        方法1;

  9.        方法2;

  10.        

  11.        方法m;

  12. }

注意

  • 在Java中创建一个类,有三个要素:一个class、类名和一对大括号

  • class前面有一个public ,表示“公有”的意思,不要漏写“pulbic"

  • class 后面跟类名,类名要遵循一定规则

    • 不能使用Java关键字

    • 不能包含空格或点号以及除下划线”_"和“$"字符以外的特殊字符

    • 不能以数字开头

  • 首字母最好大写

3.2 如何定义类

3.2.1 定类的步骤

•定义类名

•编写类的属性

•编写类的方法

3.2.2 问题:在不同北大青鸟培训中心,会感受到相同的环境和教学氛围,用类的思想输出中心信息

实现

  1. public class School {

  2. String schoolName; //中心名称

  3. int classNumber; //教室数目

  4. int labNumber; //机房数目

  5. //定义北大青鸟中心的方法

  6. public void showCenter() {

  7. System.out.println(schoolName + "培训学员 " + "配备:"

  8. + classNumber + "教" + labNumber + "机");

  9. }

  10. }

3.2.3 定义一个简单方法

  1. 访问修饰符 返回值类型 方法名(){

  2. }

3.2.4 标识符的命名法

  • 骆驼命名法:第一个单词的首字母小写,后面每个单词的首字母大写;showCenter

  • 帕斯卡命名法:每一个单词的首字母都大写;School

  • 在Java中,定义类的属性和方法使用骆驼命名法,定义类使用帕斯卡命名法

3.3 如何创建和使用对象

3.3.1 创建对象的语法

  1. 类名 对象名 = new 类名();

eg School center = new School()

3.3.2 使用对象的语法 

  • 引用对象成员:使用“.”进行以下操作

    • 引用类的属性:对象名.属性

    • 引用类的方法:对象名.方法名()

  1. center.name = "北京中心";    //给name属性赋值
  2. center.showCenter();     //调用showCenter()方法

3.3.3 创建北京中心

  1. public class InitialSchool {
  2. public static void main(String[] args) {
  3. School center = new School();
  4. System.out.println("***初始化成员变量前***");
  5. center. showCenter();
  6. center.schoolName = "北京中心";
  7. center.classNumber = 10;
  8. center.labNumber = 10;
  9. System.out.println(" ***初始化成员变量后***");
  10. center.showCenter()
  11. }
  12. }

分析:

  • main()方法是程序的入口,可以出现在任意一个类中,因此也可以写在School类中。写在这里的原因,是希望不同的类实现不同的功能

  • 使用关键字new创建类的对象

  • 使用”."操作符访问类的属性

  • 使用“."操作符访问类的方法

3.4 综合示例

3.4.1 需求:编写学员类,输出学员相关信息

效果
        
分析

        

实现
  1. public class Student {
  2. String name; //姓名
  3. int age; //年龄
  4. String classNo; //班级
  5. String hobby; //爱好
  6. public void show(){
  7. System.out.println(name + " 年龄:" + age + " 就读于:" +
  8. classNo + " 爱好:" + hobby);
  9. }
  10. }
  1. public class InitialStudent {
  2. public static void main(String args[]){
  3. Student student = new Student(); //创建对象
  4. student.name = "张浩"; //给各个属性赋值
  5. student.age = 10;
  6. student.classNo = "S1班";
  7. student.hobby = "篮球";
  8. student.show(); //调用方法
  9. }
  10. }

3.4.2 编写教员类,输出教员相关信息 

需求
        
分析
        


实现
  1. public class Teacher {
  2. String name; //姓名
  3. String major; //专业方向
  4. String courses; //教授课程
  5. int schoolAge; //教龄
  6. //输出信息方法
  7. public void show(){
  8. System.out.println(name + " 专业方向:" + major +
  9. " 教授课程:" + courses + " 教龄:" + schoolAge);
  10. }
  11. }
  1. public class InitialTeacher {
  2. public static void main(String[] args) {
  3. Teacher teacher = new Teacher(); //创建对象
  4. teacher.name = "王老师"; //给各个属性赋值
  5. teacher.major = "计算机";
  6. teacher.courses = "使用Java语言理解程序逻辑";
  7. teacher.schoolAge = 5;
  8. teacher.show(); //调用方法
  9. }
  10. }

3.4.3 输出门票的价格

需求:
        一个景区根据游人的年龄收取不同价格的门票。请编写游人类,根据年龄段决定能够购买的门票价格并输出 

        

分析

        

实现
  1. public class Visitor {
  2. String name; //姓名
  3. int age; //年龄
  4. public void show(){
  5. Scanner input = new Scanner(System.in);
  6. while(!"n".equals(name)){
  7. if(age>=18 && age<=60){ //判断年龄
  8. System.out.println(name + "的年龄为:" + age +
  9. ",门票价格为:20元 " );
  10. }else{
  11. System.out.println(name + "的年龄为:" + age + ",门票免费 ");
  12. }
  13. System.out.print("请输入姓名:");
  14. name = input.next(); //给name属性赋值
  15. if(!"n".equals(name)){
  16. System.out.print("请输入年龄:");
  17. age = input.nextInt(); //给age属性赋值
  18. }
  19. }
  20. System.out.print("退出程序");
  21. }
  22. }
  1. public class InitialVistor {
  2. public static void main(String[] args) {
  3. Scanner input = new Scanner(System.in);
  4. Visitor v = new Visitor(); //创建对象
  5. System.out.print("请输入姓名:");
  6. v.name = input.next(); //给name属性赋值
  7. System.out.print("请输入年龄:");
  8. v.age = input.nextInt(); //给age属性赋值
  9. v.show();                       //调用显示信息方法
  10. }
  11. }

4 技能训练

    利用面向对象的方法,编写一个计算器(Calculator),可以实现两个整数的加、减、乘、除运算

5 小结

  • 对象是用来描述客观事物的一个实体

  • 类定义了对象将会拥有的特征(属性)和行为(方法)

  • 类是对象的类型,对象是类的实例

  • 使用类的步骤 

        












关注我们


捐赠我们
    良师益友工作室一直在致力于帮助编程爱好更加快速方便地学习编程,如果您对我们的成果表示认同并且觉得对你有所帮助,欢迎您对我们捐赠^_^。


    



























原文地址:https://www.cnblogs.com/imentors/p/4711158.html