一.如何抽象对象
1.创建一个类
2.给该描述属性
属性就是java中所有的数据类型
3.给该类定义行为方法
方法的签名是:public void 方法名(){方法体}
公共的 无返回类型

二.如何使用类和对象
1.创建类的对象实例
Student stu = new Student();
2.访问对象的属性和方法:通过对象名.属性名或者方法名
例如:stu.name = "张三";
stu.study();

三.构造方法
1.定义:构建一个类的对象的方法
2.特点:和类名一致,没有返回类型
3.调用:通过new关键字来调用

四.带参数和返回类型的方法
1.方法的签名:访问修饰符 返回类型 方法名(形参数列表){方法体}
例如:public double calculate(double num1,double num2){}
2.返回类型:是方法执行完后返回的数据类型,在方法体中必须出现return关键字
3.return关键字除了返回数据之外还可以结束当前方法
4.在void的方法中也可以使用return关键字,但不能返回数据,只是结束方法
5.在调用带参数的方法时注意实参要和形参的个数,顺序,类型完全一致
6.调用带返回类型的方法,一般都用变量来接收返回值

五.例子

1.抽象出一个老师类,描述其属性和方法
测试类中,创建老师类对象,给其属性赋值,然后调用其方法

2.完成一个景区售票机的案例,游客如果年龄在8岁以下是全免,8-15岁是半票,15以上是成人票。
要求写一个程序完成买票过程。要求是用类和对象来实现
a.分析该案例中有哪些对象
b.完成对象的抽象(描述属性和方法)
c.编写测试类,测试数据

业务修改:除了年龄,根据性别有了新的业务需求:
1.性别为女,15岁以下 全免,60岁以上也是全免 15--60都是成人票
2。性别为男买票规则不变

3.编写一个计算器的程序,完成各项运算。完成一次运算
要求:面向对象的编程思想

4.编写一个榨汁器:根据用户输入的不同水果,榨出不同的饮料。
要求,用带返回值和参数的方法完成

package com.demo1102;
/*** 类和对象的案例* @author allen**/
public class Demo1 {public static void main(String[] args) {Student stu = new Student();//创建了一个学员实例对象//新构建出来的对象中的属性全部为默认初始值//访问属性和方法stu.name = "张三";stu.age = 18;stu.sex = "女";stu.phone = "110";//访问方法stu.study();stu.intrduce();}
}
//一个类中可以由多个类,但是public修饰的类必须和文件名相同
class Student{String name;String sex;int age;String phone;double height;public Student() {//此方法为构造方法,含义是创建该类的对象时被调用}public void study(){System.out.println("我好好学员,天天向上");System.out.println("偶尔抽空撸两把");}public void intrduce(){System.out.println("我的名字是:"+name+",我今年"+age+"岁,我的手机号码是:"+phone+",欢迎骚扰");}
}

  

package com.demo1102;import java.util.Scanner;
/*** 买票案例* @author allen**/
public class Demo2 {public static void main(String[] args) {Scanner s = new Scanner(System.in);System.out.println("请输入您的年龄:");Guest g = new Guest();g.age = s.nextInt();System.out.println("请输入性别:");g.sex = s.next();g.ticket();}
}class Guest{int age;String sex;public void ticket(){if("男".equals(sex)){if(age<8){System.out.println("全免");}else if(age>=8&&age<15){System.out.println("半票");}else if(age>=15){System.out.println("成人票");}}else if("女".equals(sex)){if(age<=15){System.out.println("全免");}else if(age>15&&age<=60){System.out.println("成人票");}else if(age>60){System.out.println("全免");}}else{System.out.println("你可以上天了");}}
}

  

package com.demo1102;import java.util.Scanner;import javax.security.sasl.SaslClient;
/*** 计算器案例* @author allen**/
public class Calculate {double num1;double num2;String type;double result;public void count(){switch(type){case "+":result = num1+num2;break;case "-":result = num1-num2;break;case "*":result = num1*num2;break;case "/":result = num1/num2;break;case "%":result = num1%num2;break;}System.out.println("result="+result);}public void test(){int a=1;if(a!=1){return;//return在此处的作用就是结束当前方法}System.out.println("程序结束");}public static void main(String[] args) {Scanner sc = new Scanner(System.in);Calculate c = new Calculate();System.out.println("请输入第一个数:");c.num1 = sc.nextDouble();System.out.println("请输入运算符号:");c.type = sc.next();System.out.println("请输入第二个数:");c.num2 = sc.nextDouble();c.count();}
}

package com.demo1102;import java.util.Scanner;/*** 榨汁器案例* @author allen**/
public class Demo4 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入你要榨汁的水果:");String shuiguo = sc.next();Juicer j = new Juicer();String result = j.juicing(shuiguo);System.out.println("您炸的"+result+"已经好了");}
}class Juicer{public String juicing(String fruit){System.out.println("正在榨汁.....");try {Thread.sleep(5000);//模拟一个5秒的等待过程} catch (InterruptedException e) {e.printStackTrace();}return fruit+"汁";}
}

 

/** 3.编写一个计算器的程序,完成各项运算。
要求:面向对象的编程思想*/
package com.class1102;import java.util.Scanner;public class Class03 {public static void main(String[] args) {// TODO Auto-generated method stubScanner sc=new Scanner(System.in);Operate o=new Operate();System.out.println("请输入第一个数");o.a=sc.nextDouble();System.out.println("请输入第二个数");o.b=sc.nextDouble();System.out.println("请输入操作符");o.sign=sc.next();o.js();}}class Operate{double a,b,result;String sign;public Operate(){}public void js(){if(sign.equals("+")){result=a+b;}else if(sign.equals("-")){result=a-b;}else if(sign.equals("*")){result=a*b;}else if(sign.equals("/")){result=a/b;}System.out.println("计算结果为:"+result);}
}

/** 1.写一个类描述笔记本电脑:
属性有:品牌,重量,cpu型号,内存大小,硬盘大小,显卡型号
方法有:显示笔记本基本信息 showInfo()
编写测试类:给笔记本对象属性赋值,调用显示笔记本基本信息方法展示给客户*/
package com.class1102;import java.util.Scanner;public class Test1 {public static void main(String[] args) {// TODO Auto-generated method stubNotebook nt=new Notebook();nt.sign="宏碁(acer)";nt.weight=1.3;nt.cpu="N3450";nt.memory=4;nt.hdisk=128;nt.dcard="集成显卡";nt.showInfo();    }}class Notebook{String sign;double weight;String cpu;int memory;int hdisk;String dcard;public void showInfo(){System.out.println("该笔记本品牌是:"+sign+",");System.out.println("该笔记本重量是:"+weight+"kg,");System.out.println("该笔记本cpu型号是:"+cpu+",");System.out.println("该笔记本内存大小是:"+memory+"G,");System.out.println("该笔记本硬盘大小是:"+hdisk+"G,");System.out.println("该笔记本显卡型号是:"+dcard+",");}}

  

/** 2.写一个个人所得税计算器,用户输入税前工资,计算得到税后工资
要求用带参数和返回类型的方法
规则:个税起征点为3500超过部分        税点1500以内        5%1500-3000 10%3000-5000 15%5000-8000 20%8000以上        25%*/
package com.class1102;import java.util.Scanner;public class Test2 {public static void main(String[] args) {// TODO Auto-generated method stubScanner sc=new Scanner(System.in);TaxCalculator tc=new TaxCalculator();System.out.println("请输入税前工资");tc.count(sc.nextDouble());}}class TaxCalculator{public double count(double i){double result=0;if(i<=3500){result=i;}else if(i>3500&&i<5000){result=3500+(i-3500)*(1-0.05);}else if(i>=5000&&i<6500){result=3500+1500*(1-0.05)+(i-5000)*(1-0.1);}else if(i>=6500&&i<8500){result=3500+1500*(1-0.05)+1500*(1-0.1)+(i-6500)*(1-0.15);}else if(i>=8500&&i<11500){result=3500+1500*(1-0.05)+1500*(1-0.1)+2000*(1-0.15)+(i-8500)*(1-0.2);}else{result=3500+1500*(1-0.05)+1500*(1-0.1)+2000*(1-0.15)+3000*(1-0.2)+(i-11500)*(1-0.25);}System.out.println("税后工资为:"+result);return result;}}

  

/** 3.完成一个自动摇奖机
摇奖机可以由工作人员设置奖品,然后随机抽奖
思路:
设计一个摇奖机类
属性:是一个奖品数组
方法: 方法一 :设置奖品方法方法二:随机抽出奖品
测试类:
第一步工作人员设置奖品,第二步,工作人员完成抽奖*/
package com.class1102;import java.util.Random;
import java.util.Scanner;public class Test3 {public static void main(String[] args) {// TODO Auto-generated method stubScanner sc=new Scanner(System.in);Random r=new Random();Ernie e=new Ernie();String s[]=new String[7];for(int j=0;j<e.prize.length;j++){System.out.println("请输入第"+j+"个奖品");s[j]=sc.nextLine();}e.setErnie(s);System.out.println("开始抽奖");String j=e.getERnie(r.nextInt(8));System.out.println("奖品是"+j);}}class Ernie{String prize[]=new String[7];;public void setErnie(String s[]){for(int i=0;i<prize.length;i++){prize[i]=s[i];}}public String getERnie(int t){String p=null;for(int i=0;i<prize.length;i++){if(t==i){p=prize[i];}}return p;}}

  

六.小游戏  

/** 1.猜数字游戏:
系统会自动生成0-9的不重复的4个数字 例如:8350
用户有8次机会来猜这些数字的,不仅要数字正确,顺序也要正确才为答对
每次用户都是输入4个数字,系统给出相应的提示:
提示规则:数字和位置正确的提示A   数字正确但位置不正确的提示B
例如:用户输入1234  系统提示:0A1B用户第二次:5678   系统提示:0A2B用户第三次:0912   系统提示:0A1B用户第四次:1203   系统提示:0A2B用户第五次:3051   系统提示:1A2B用户第六次:Random r = new Random();r.nextInt(10);0-9       */
package com.class1101;import java.util.Random;
import java.util.Scanner;public class Class01 {public static void main(String[] args) {// TODO Auto-generated method stubint arr[]=new int[4];Random r=new Random();for(int i=0;i<arr.length;i++){arr[i]=r.nextInt(10);for(int j=0;j<i;j++){while(arr[i]==arr[j]){arr[i]=r.nextInt(10);}}//System.out.print(arr[i]+" ");}Scanner sc=new Scanner(System.in);int num;int arr2[]=new int[4];for(int i=1;i<9;i++){System.out.print("请输入第"+i+"个数:");num=sc.nextInt();arr2[0]=num/1000;arr2[1]=(num%1000)/100;arr2[2]=(num%1000)%100/10;arr2[3]=(num%1000)%100%10;int a=0;int b=0;for(int j=0;j<arr2.length;j++){//System.out.print(arr2[j]+" ");if(arr2[j]==arr[j]){a++;}else{for(int k=0;k<arr.length;k++){if(arr2[j]==arr[k]){b++;}}}}if(a==4){System.out.println("恭喜猜中数字");break;}else{System.out.println("提示:"+a+"A"+b+"B");}}}}

  

/**  2.穿越火线用二维数组生成一个15*15的地图,全部用方块表示□随机生成用户位置用三角形△表示,随机生成目的位置用五角星☆表示,在地图上随机生成20个地雷用户不可见。
用户选择上下左右移动位置,每次移动一格,移动后要显示用户走过的路程用○表示。踩上地雷身亡,顺利到达目标则为胜利!*/
package com.class1101;import java.util.Random;
import java.util.Scanner;public class Class02 {public static void main(String[] args) {// TODO Auto-generated method stubScanner sc=new Scanner(System.in);char arr[][]=new char[15][15];Random r=new Random();//1、随机生成起点和终点的坐标,并使两点不重复int r1=r.nextInt(arr.length);int r2=r.nextInt(arr[0].length);int s1=r.nextInt(arr.length);int s2=r.nextInt(arr[0].length);while(r1==s1&&r2==s2){r1=r.nextInt(arr.length);}//2、生产20个地雷的坐标,并使其本身不重复,和起点、终点也不重复int d1[]=new int[20];int d2[]=new int[20];for(int i=0;i<d1.length;i++){d1[i]=r.nextInt(arr.length);d2[i]=r.nextInt(arr.length);for(int j=0;j<i;j++){while(d1[i]==d1[j]&&d2[i]==d2[j]||d1[i]==r1&&d2[i]==r2||d1[i]==s1&&d2[i]==s2){d1[i]=r.nextInt(arr.length);d2[i]=r.nextInt(arr.length);}}}int t1[]=new int[arr.length];int t2[]=new int[arr.length];int t3=0;//int t1=-1,t2=-1;while(true){//3.通过键盘输入移动用户位置String key=sc.nextLine();if(key.equals("w")){if(r1>0){r1--;}}else if(key.equals("s")){if(r1<arr.length-1){r1++;            }}else if(key.equals("a")){if(r2>0){r2--;          }}else if(key.equals("d")){if(r2<arr.length-1){r2++;             }}//4.判断用户是否踩到地雷,如果踩到,游戏失败。boolean b=false;for(int i=0;i<d1.length;i++){if(r1==d1[i]&&r2==d2[i]){b=true;System.out.println("踩到地雷,游戏失败");break;}}if(b){break;}//5.输出游戏界面int i,j=0;for(i=0;i<arr.length;i++){for(j=0;j<arr[i].length;j++){if(i==r1&&j==r2){arr[i][j]='△';}else if(i==s1&&j==s2){arr[i][j]='☆';}else{arr[i][j]='□';for(int k=0;k<t3;k++ ){arr[t1[k]][t2[k]]='○';    }/*if(i==t1&&j==t2){arr[i][j]='○';}else{arr[i][j]='□';}*/}System.out.print(arr[i][j]+"\t");}System.out.println();}t1[t3]=r1;t2[t3]=r2;t3++;//t1=r1;//t2=r2;//6.当用户成功到达终点时,游戏胜利。if(r1==s1&&r2==s2){System.out.println("胜利!");break;}}}}

  

  

转载于:https://www.cnblogs.com/wlxslsb/p/10353266.html

6.oop-类和对象相关推荐

  1. oop 类和对象的_实用程序类的OOP替代

    oop 类和对象的 实用程序类(也称为帮助程序类)是仅具有静态方法且不封装状态的"结构". StringUtils , IOUtils , FileUtils从Apache的共享 ...

  2. [转载] Python3基础:08_02_面向对象编程(OOP)——类和对象

    参考链接: Python中的面向对象编程OOP | 3(继承,对象示例,issubclass和super) 0.前言   这篇博文将讲述Python面向对象开发中的类与对象的概念,包括对类和对象的理解 ...

  3. 高阶Day1:面向对象,面向过程,类和对象的属性和方法创建

    高阶Day1:面向对象,面向过程,类和对象的属性和方法创建 高级编程学习4个内容: 面向对象 MySQL数据库 网络编程 并发编程 面向过程(POP)与面向对象(OOP): 类和对象: 类名的定义: ...

  4. 【译文】 C#面向对象的基本概念 (Basic C# OOP Concept) 第一部分(类,对象,变量,方法,访问修饰符)...

    译文出处:http://www.codeproject.com/Articles/838365/Basic-Csharp-OOP-Concept 相关文档:http://files.cnblogs.c ...

  5. Java学习_day008面向对象(OOP):对象和类

    面向对象:OO 面向对象的分析:OOA 面向对象的设计:OOD 面向对象分析与设计:OOAD--目标 面向对象的编程:OOP--起始点 高质量代码的要求(OO终极目标):复用性好.拓展性好.维护性好. ...

  6. 面向对象编程(OOP)特性 类和对象

    面向对象编程(OOP)  思维导图 一.类和对象 1.对象 随处可见的一种事物就是对象,对象是事物存在的实体.人们思考这些对象都是由何种部分组成的,通常会将对象划分为动态部分和静态部分.静态部分,顾名 ...

  7. Python使用---面向对象OOP(类和对象)--完善中

    来源于此 目录 1.面向对象(OOP)基本概念 1.1 过程和函数(科普) 1.2 面相过程 和 面相对象 基本概念 2 类和对象 2.1 类 2.2 对象 2.3 类和对象的关系 3 类的设计 4 ...

  8. java怎样用类模板创建对象_java入门(十四) | 面向对象(OOP)之类和对象

    上一期是变量,在java中变量总是无处不在,而变量其意就是可以改变的数,在一般情况下我们可以以变量类型,变量名,变量值来描述它 这一期是给面向对象(OOP)开了一个头,对他的概念,三大特征有了一个基础 ...

  9. python基础----面向对象的程序设计(五个阶段、对小白的忠告、关于OOP常用术语)、类、对象...

    一.面向对象的软件开发有如下几个阶段                                              1.面向对象分析(object oriented analysis ,O ...

  10. java oop概念_JAVA OOP(一)——OOP概念,类与对象

    OOP概念,类与对象 OOP--面向对象编程 类与对象 类 对象 OOP--面向对象编程 首先,我们来举一个例子: 现在我要用用代码实现下列要求,定义一只猫,它的名字叫"小芳",年 ...

最新文章

  1. 专业嵌入式软件开发——全面走向高质高效编程(含DVD光盘1张)
  2. bash shell实现二进制与十进制数的互转
  3. Knative 快捷操作命令 Kn 介绍
  4. C#中控件如何设置透明色
  5. .NET Core 3.0中的数据库驱动框架System.Data
  6. redis rdb aof区别_Redis 持久化之 RDB 与 AOF 详解
  7. 【前端知识学习】HTML5 学习笔记
  8. 免费mac虚拟机下载 快速安装win系统
  9. jquery 找不到live方法解决
  10. MTK 驱动开发(33)---Vibrator
  11. pcb成型板aoi检测_smt贴片加工打样的检测设备
  12. Windows 下 PHP 开发环境配置系列二(使用 MODx CMS)
  13. 第一章 虚拟化技术概述
  14. date 日期时间命令
  15. 洛谷oj---1036 选数
  16. 老实人的摸索与反思——写在高考七年后
  17. java对zip、rar、7z文件带密码解压实例
  18. android图标重力感应插件,重力感应,图片摆动旋转(自定义控件) android
  19. 各种门平面图画法_关于CAD各种门怎么画平面图就行 CAD铝合金门窗
  20. 逆水寒江湖无限服务器等级,逆水寒上限多少级 逆水寒等级上限是多少

热门文章

  1. [转发]MyTT所有源码
  2. Navicat安装教程和评测
  3. JavaSocket简单通信
  4. C语言——判断两个数组中是否有相同的元素
  5. CC00382.CloudKubernetes——|KuberNetesCI/CD.V20|——|Jenkins.v08|kubeconfig多集群配置.v02|
  6. MATLAB基于小波变换的语音信号去噪算法改进
  7. 财阀还是民主?DeFi协议大战,暗潮汹涌
  8. 驾校计算机计时培训管理系统,计时培训系统使用说明-驾校
  9. 线性代数(四十) : 正交补与正交投影
  10. IDM下载器 v6.38.20 最新中文版 免费的多线程下载工具