6.oop-类和对象

news/2024/11/15 4:39:27/

一.如何抽象对象
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


http://www.ppmy.cn/news/189513.html

相关文章

i5-8250U 宏碁swift3_【AcerSwift3评测】高端品质亲民售价 宏碁蜂鸟Swift3 14英寸版评测(全文)_Acer Swift 3 _笔记本评测-中关村在线...

宏碁蜂鸟Swift3系列笔记本产品一直以来都以精湛的制造工艺与优良的性价比著称&#xff0c;在5000-6000元级市场拥有极高的用户口碑。不同于其他厂商对主流价位产品的保守设计态度&#xff0c;宏碁蜂鸟Swirt3系列能够为用户带来多种鲜活的色彩、纤薄化的金属机身以及超长续航、指…

深度学习 训练吃显卡_【已购买】用于训练深度学习模型的GPU开发本 - 笔记本电脑(Notebook)版 - 北大未名BBS...

我是自己求推荐 男生:住在校外需要笔记本电脑。 1.预算 8000~10000 rmb,希望能用10年左右 2.选购倾向: 已看重的品牌:联想、华硕、宏基 3.主要用途 用于训练深度学习模型 4.细节要求 A.重量要求 (无所谓) B.屏幕尺寸要求 (>=13.3英寸) C.SSD要求 (512G + 1T硬盘) D.电…

显卡吧超级计算机,残暴8路Tesla V100:NVIDIA 英伟达 发布 HGX-1 超级计算机

五杀超神吧 NVIDIA STUDIO 设计师电脑主机渲染建模影视后期视频剪辑台式定制组装图形工作站 升级版1 i7 8700/RTX2060S 8G 五杀超神吧 NVIDIA STUDIO 设计师电脑主机渲染建模影视后期视频剪辑台式定制组装图形工作站 升级版1 i7 8700/RTX2060S 8G 23999元起 NVIDIA 英伟达 Shie…

宏碁暗影骑士4安装不了Linux,宏碁暗影骑士4评测:在细节中不断改进前行!

[PConline 评测]A&#xff1a;“你说现在游戏本发展得这么快&#xff0c;选择也这么多了&#xff0c;玩个游戏价格多少更合适&#xff1f;” B&#xff1a;“别废话&#xff0c;问我&#xff1f;免费最合适&#xff01;” A&#xff1a;“得了&#xff0c;正经点&#xff0c;就…

宏基蜂鸟sf515装虚拟机运行linux,宏碁蜂鸟Swift 5评测:轻奢触控本是怎样炼成的?...

虽然以智能手机和平板电脑为代表的移动设备都具备了一定“轻办公”的能力&#xff0c;但受限于屏幕尺寸、操作逻辑和软件生态的限制&#xff0c;它们的“生产力”却远远不如同样主打轻薄便携的笔记本们。 问题是&#xff0c;绝大多数所谓的“轻薄本”都对不起它们的称号&#x…

学计算机买宏基好吗,想买轻薄笔记本,宏碁蜂鸟是不错的选择

想买轻薄笔记本&#xff0c;宏碁蜂鸟是不错的选择 2020-10-06 10:21:11 15点赞 5收藏 11评论 提起轻薄本许多人会想到Apple MacBook Air&#xff0c;毕竟是乔帮主首次将能装载牛皮纸信封的笔记本展示给了消费者。但要论好用Apple MacBook Air由于系统差异性、接口单一性、产品价…

暗影骑士vn7安装linux,宏碁暗影骑士vn7 591g笔记本怎么样?

宏碁暗影骑士&#xff0c;是当下宏碁笔记本中首推的系列之一。这款机器外观风格很像游戏本&#xff0c;但是厚度却做到了24mm以内&#xff0c;散热上也设计了双风扇。除此以外&#xff0c;VN7-591G的配置在同价位笔记本中也算是比较高的&#xff0c;配备IPS屏&#xff0c;860M显…

宏基 4560G笔记本 AMD APU A6-3400试用报告

宏基 4560G笔记本 AMD APU A6-3400试用报告 2011年09月18日 综述&#xff1a; 自9月5日起&#xff0c;至今天&#xff08;9月18日&#xff09;&#xff0c;为期两周的AMD APU笔记本电脑测评工作可以说已经接近尾声了&#xff0c;两周的时间内&#xff0c;对笔记本的外观、续航…