本章技能目标:

  • 使用类图描述设计
  • 掌握面向对象设计的基本步骤
  • 掌握类和对象的概念
  • 掌握构造方法及其重载
  • 掌握封装的概念及其使用

本章单词:

  class:类

  object:对象

  static:

  final:

  private:

  public:

  protect:

  overloding:方法重载

  overriding:方法覆盖

  constructor:构造方法

  encapsulation:封装

1.1用面向对象设计电子宠物系统

  万事万物皆对象

  从具体到抽象

  ¥*¥面向对象的过程就是抽象的过程:分三步来完成

    第一步:发现类

    第二步:发现类的属性

    第三步:发现类的方法

  

  1. package day0702;
  2. /**
  3. * 宠物猫类
  4. * @author 刘晶晶
  5. *
  6. */
  7. public class Cat {
  8. String name="无名氏"; //姓名
  9. String strain = "可爱的Cat"; //品种
  10. int health = 80; //健康值
  11. int love =60; //与主人的亲密度
  12.  
  13. /**
  14. * 输出宠物的信息:自我介绍
  15. */
  16. public void print(){
  17. System.out.println("我的名字是:"+name);
  18. System.out.println("我是:"+strain);
  19. System.out.println("我的健康值是:"+health);
  20. System.out.println("我与主人的亲密度是:"+love);
  21. }
  22. }
  1. package day0702;
  2. /**
  3. * 宠物鱼类
  4. * @author Administrator
  5. *
  6. */
  7. public class Fish {
  8. String name = "无名氏"; //姓名
  9. String sex = "小鱼妹"; //性别
  10. int health = 60; //健康值
  11. int love =80; //与主人的亲密度
  12.  
  13. /**
  14. * 输出宠物的信息:自我介绍
  15. */
  16. public void print(){
  17. System.out.println("我的名字是:"+name);
  18. System.out.println("我是:"+sex);
  19. System.out.println("我的健康值是:"+health);
  20. System.out.println("我与主人的亲密度是:"+love);
  21. }
  22. }
  1. package day0702;
  2.  
  3. import java.util.Scanner;
  4.  
  5. /**
  6. * 宠物领养类
  7. * @author Administrator
  8. *
  9. */
  10. public class PetTest {
  11.  
  12. /**
  13. * @param args
  14. */
  15. public static void main(String[] args) {
  16. // TODO Auto-generated method stub
  17. System.out.println("欢迎来到宠物之家!");
  18.  
  19. //创建键盘录入对象
  20. Scanner input= new Scanner(System.in);
  21.  
  22. //主人输入宠物的名字
  23. System.out.println("请输入宠物的名字:");
  24. String petName = input.next();
  25.  
  26. //选择宠物的类型
  27. System.out.println("请输入领养宠物的类型:(1:猫 2:鱼)");
  28.  
  29. switch (input.nextInt()) {
  30. case 1:
  31. //选择了猫
  32. //选择猫的品种
  33. System.out.println("选择猫的品种:(1:可爱的Cat 2:活泼的Cat)");
  34. String strain=null;
  35. if(input.nextInt()==1){
  36. strain="可爱的Cat";
  37. }else if(input.nextInt()==2){
  38. strain="活泼的Cat";
  39. }
  40. //创建猫的对象并赋值
  41. Cat cat=new Cat();
  42.  
  43. cat.name=petName;
  44. cat.strain=strain;
  45.  
  46. //输出猫的信息 调用print方法
  47. cat.print();
  48.  
  49. break;
  50. case 2:
  51. //选择了鱼
  52. //选择鱼的性别
  53. System.out.println("请输入鱼的性别:(1:小鱼妹 2:小鱼仔)");
  54. String sex=null;
  55. if(input.nextInt()==1){
  56. sex ="小鱼妹";
  57. }else if(input.nextInt()==2){
  58. sex ="小鱼仔";
  59. }
  60.  
  61. //创建鱼的对象
  62. Fish fish = new Fish();
  63. fish.name=petName;
  64. fish.sex=sex;
  65.  
  66. //输出鱼的信息 调用print()方法
  67. fish.print();
  68. break;
  69.  
  70. default:
  71. System.out.println("抱歉,宠物店还没有此类宠物!");
  72. break;
  73. }
  74.  
  75. }
  76.  
  77. }

静态变量static final

1.2.2  构造方法及其重载

无参构造方法

  1. package day0702;
  2. /**
  3. * 宠物猫类
  4. * @author 刘晶晶
  5. *
  6. */
  7. public class Cat {
  8. String name="无名氏"; //姓名
  9. String strain = "可爱的Cat"; //品种
  10. int health = 80; //健康值
  11. int love =60; //与主人的亲密度
  12.  
  13. /**
  14. * 无参构造方法
  15. */
  16. public Cat(){
  17. name="楠楠";
  18. strain="嘻哈的Cat";
  19. health=89;
  20. love=98;
  21. System.out.println("执行构造方法");
  22. }
  23.  
  24. /**
  25. * 输出宠物的信息:自我介绍
  26. */
  27. public void print(){
  28. System.out.println("我的名字是:"+name);
  29. System.out.println("我是:"+strain);
  30. System.out.println("我的健康值是:"+health);
  31. System.out.println("我与主人的亲密度是:"+love);
  32. }
  33.  
  34. /**
  35. * 测试无参构造方法的使用
  36. */
  37. public static void main(String[] args){
  38. //创建Cat对象
  39. Cat cat = new Cat();
  40.  
  41. //调用cat对象的方法,输出cat的信息
  42. cat.print();
  43. }
  44.  
  45. }

运行结果:

有参构造方法

1.2.3常见错误

练习

Dog

+name:String

+strain:String

+health:int

+love:int

 +print():void

Dog类图

上述代码已展示

  1. package day0702;
  2. /**
  3. * 马类 带参构造方法
  4. * @author Administrator
  5. *
  6. */
  7. public class Horse {
  8. /**
  9. * 有参构造方法
  10. * @param name
  11. * @param strain
  12. * @param age
  13. */
  14. public Horse(String name, String strain, int age) {
  15. super();
  16. this.name = name;
  17. this.strain = strain;
  18. this.age = age;
  19. }
  20. /**
  21. * 有参构造方法 name一个参数
  22. */
  23. public Horse(String name){
  24. this.name=name;
  25. }
  26.  
  27. /**
  28. * 无参构造方法
  29. */
  30. // public Horse() {
  31. // super();
  32. // // TODO Auto-generated constructor stub
  33. // }
  34. String name;
  35. String strain;
  36. int age;
  37.  
  38. /**
  39. *输出马信息的方法
  40. * @param args
  41. */
  42. public void showHorse(){
  43. System.out.println("马的名字是:"+name);
  44. System.out.println("马的品种是:"+strain);
  45. System.out.println("马的年龄是:"+age);
  46. }
  47.  
  48. public static void main(String[] args){
  49. //创建Horse对象
  50. //Horse horse =new Horse();
  51. //当把前面的无参构造方法注释的时候,此条语句报错,因为缺少无参构造
  52. Horse horse =null;
  53. horse=new Horse("千里良驹");
  54. horse.showHorse();
  55.  
  56. }
  57.  
  58. }

???

  

NiXi.DAY06东软实训.:面向对象思想~抽象~static~final~构造方法及其重载的更多相关文章

  1. 逆袭之旅.DAY07东软实训..封装~继承~抽象~final

    2018年7月3日.逆袭之旅DAY07 package day0703.exam1; /** * 狗狗类 使用权限修饰符private和public进行封装 * @author Administrat ...

  2. 【东软实训】SQL多表链接

    如果一个查询同时涉及两个以上的表,则称之为链接查询,链接查询是关系数据库中最主要的查询,主要包括等值链接查询.非等值链接查询.自身链接查询.外链接查询和复合条件链接查询. 这篇博文我们来对多表链接进行 ...

  3. 【东软实训】SQLselect及其相关操作

    SQL select 及相关操作 SQL是用于访问和处理数据库的标准的计算机语言,我们所使用的的是Oracle SQL 一个数据库通常包含一个或多个表,每个表有一个名字表示,下图即为一个名为“emp” ...

  4. 东软实训1 -jsp内置对象及其常用方法

    JSP 的内置对象及方法详细说明 一. request 对象 客户端的请求信息被封装在 request 对象中,通过它才能了解到客户的需 求,然后做出响应.它是 HttpServletRequest ...

  5. 东软实训4-JDBC连接数据库

    JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口 ...

  6. 东软实训3-servlet基础

    Java Servlet技术的核心就是在服务端创建能响应用户请求的对象,被创建的对象习惯上称为一个Servlet对象. 编写一个创建servlet对象的类就是编写一个特殊类的子类,这个特殊的类就是ja ...

  7. 东软实训2-在jsp中使用javaBean

    在JSP中可以像使用普通类一样访问JavaBean,在脚本元素中实例化类的对象,调用对象的方法.JSP提供了3个动作元素,和来访问JavaBean. 1.1 动作用于初始化JavaBean,或者定位一 ...

  8. 逆袭之旅DAY17.东软实训.Oracle.PLSQL.过程,函数,包,练习

    2018-07-13 14:54:46 --1.创建一个包,包含一个为雇员加薪的过程,一个为雇员减薪的过程 CREATE OR REPLACE PACKAGE pac_test1 IS PROCEDU ...

  9. 逆袭之旅DAY17.东软实训.Oracle.存储过程

    2018-07-13 09:08:36

随机推荐

  1. SpringBoot和Mybatis的整合

    这里介绍两种整合SpringBoot和Mybatis的模式,分别是“全注解版” 和 “注解xml合并版”. 前期准备开发环境 开发工具:IDEAJDK:1.8技术:SpringBoot.Maven.M ...

  2. Linux下解包/打包,压缩/解压命令

    .tar 解包:tar xvf FileName.tar 打包:tar cvf fileName.tar DirName tar.gz和.tgz 解压:tar zxvf FileName.tar.zi ...

  3. ES6的新API如Promise,Proxy,Array.form(),Object.assign()等,Babel不能转码, 使用babel-polyfill来解决

    Babel默认只转换新的JavaScript句法(syntax),而不转换新的API,比如Iterator.Generator.Set.Maps.Proxy.Reflect.Symbol.Promis ...

  4. DRF中的APIView、GenericAPIView、ViewSet

    1.APIView(rest_framework.views import APIView),是REST framework提供的所有视图的基类,继承自Django的View. 传入到视图方法中的是R ...

  5. CC4 表达方式----输赢

    “我要赢,不管付出什么,我一定要赢!”当我赢得时候,“我赢了!(欢呼)”.当我输的时候“不,我不要输.不开心.(垂头丧气)”.这样的场景你是否熟悉呢?我的一生都在经历输赢.以前我会为了赢一场游戏,花费 ...

  6. 在未排序的数组中找到第 k 个最大的元素

    在未排序的数组中找到第 k 个最大的元素.请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素. 示例 1: 输入: [3,2,1,5,6,4] 和 k = 2 输出: 5 ...

  7. Redis持久化AOF和RDB对比

    RDB持久化 AOF持久化 全量备份,一次保存整个数据库 增量备份,一次保存一个修改数据库的命令 保存的间隔较长 保存的间隔默认一秒 数据还原速度快 数据还原速度一般 save会阻塞,但bgsave或 ...

  8. Processing 与 C 相同和不同的地方

    Processing 与 C Processing 语言和其他语言有很多相似之处,这是它作为一种计算机语言的特征,同时,Processing 用于艺术创作,所以也有一些专用的函数. 相同的几点: 作为 ...

  9. liunx进程管理之进程介绍

    关于进程 process ====================================================================================Wha ...

  10. 文件上传MultipartBody使用方法

    最近有使用一个文件上传的功能,需要在请求中添加文件,一起传给服务器 Okhttp提供了这个文件添加然后上传的功能 下面给出核心的代码,然后分析一下 //多个文件上传,Filelist private ...