面向对象实例编程

编程入门 行业动态 更新时间:2024-10-06 22:19:31

<a href=https://www.elefans.com/category/jswz/34/1769334.html style=面向对象实例编程"/>

面向对象实例编程

1、为“无名的粉”写一个类class WuMingFen
要求: 1.有三个属性 面码:String theMa 粉的分量(两) int quantity 是否带汤 boolean likeSoup

//一般情况下,不允许定义类在default包中,因为default包中的类其它包无法访问
//包名称的命名规则:全小写,采用域名反转
package com.yan;
//类名称,一般名词,采用大写字母开头,大写字母分词
public class WuMingFen {
private String theMa;
private int quantity;//采用简单类型定义属性,最大的问题是很难判定是默认值还是赋的值
private boolean likeSoup=true;//按照一般的业务规则,可以一般有汤
//一般在具体开发中,建议采用私有属性,公有的get/set方法的形式定义属性
public String getTheMa() {
return theMa;
}
//业务规则:面码一旦告知则不能修改,所以可以不提供这个set方法,则面码属性就是只读属性
public void setTheMa(String theMa) {
this.theMa = theMa;
}
public int getQuantity() {
return quantity;
}
public void setQuantity(int quantity) {
//通过get/set方法可以进行一些参数的合法性验证
if(quantity<1)
quantity=1; //也可以通过抛出异常终程序运行 throw new RuntimeException()
this.quantity = quantity;
}
public boolean isLikeSoup() {//如果针对boolean类型的属性,默认get方法的命名规则是isXxxx不
是getXxx;但是如果将属性修改为Boolean,则还是getxxx
return likeSoup;
}
public void setLikeSoup(boolean likeSoup) {
this.likeSoup = likeSoup;
}
}

2.写一个构造方法 以便于简化初始化过程 如 WuMingFen f1 = new WuMingFen(“牛肉”,3,true);

// 添加一个带参构造器。如果不定义构造器则系统自动提供一个默认的的无参构造器;如果自定义构造器则系统
不再提供构造器。所以一般定义带参构造器时建议同时添加无参构造器
// 构造器不是成员,所以不能继承
// 构造器方法不能有返回值类型,连void都不能有,否则就是普通方法,不是构造器
// 构造器方法名称必须和类名称一致
// 构造器如果不定义,则系统自动提交默认的无参构造器方法;如果定义构造器方法则系统不再提供构造器
public WuMingFen(String theMa, int quantity, boolean likeSoup) {
// 方法参数likeSoup和属性名称一致,在当前方法中的likeSoup实际上就是局部变量,而不是属性;如果
需要使用属性,则必须通过this.进行引用
this.likeSoup = likeSoup;
this.theMa = theMa;
this.quantity = quantity;
}
public WuMingFen() {}public WuMingFen(String theMa, int quantity, boolean likeSoup) {
super(); //调用父类的无参构造器,在构造器中这个语句可写可不写,如果不写则默认第一句就是
super()
this.theMa = theMa;
this.quantity = quantity;
this.likeSoup = likeSoup;
}

4.如何使得下列语句构造出来的粉对象是酸辣面码、2两、带汤的 WuMingFen f3 = new WuMingFen();

//方法的重在,但是按照业务规则,给属性赋默认值
public WuMingFen(){
//方法1:酸辣面码、2两、带汤
this.likeSoup=true;
this.theMa="麻辣";
this.quantity=2;
//方法2 this("麻辣",2,true);
}

5.写一个普通方法 check() 用于查看粉是否符合要求。即将对象的三个属性打印在控制台上

public void check() {
System.out.println("无名粉:面码" + this.theMa + ",重量" + quantity + "," + (likeSoup
? "有汤" : "无汤"));
}public class T1 {
public static int getMax(int a1, int a2) {
if(a1>a2)
return a1;
else
return a2;
}
public static void main(String[] args) {
System.out.println(getMax(4, 2));
}
}
if(表达式1){
return 表达式2;
}else
return 表达式3;
int k1 = 4;
int k2 = 2;
int max = k1 > k2 ? k1 : k2;
System.out.println(max);
int k1 = 4;
int k2 = 2;
int max = k1 > k2 ? k1++ : --k2;
System.out.println(max); //4
System.out.println(k1); //5
System.out.println(k2); //2

2、定义一个名为Vehicles交通工具的基类
该类中应包含String类型的成员属性brand商标和color颜色
还应包含成员方法run行驶,在控制台显示“我已经开动了”
showInfo显示信息,在控制台显示商标和颜色
并编写构造方法初始化其成员属性。

public class Vehicles {
private String brand;// 商标,get
private String color;// 颜色,set/get
public Vehicles() {
this.brand="linken";
this.color="red";
}
public void run() {
System.out.println("我已经开动了");
}
public void showInfo() {
System.out.println("品牌为:" + this.brand + ",颜色" + color);
}
}

4、编写Addition类,该类中应包含一组实现两数相加运算的重载方法。
实现加法运算的方法,应接受两个参数,即加数和被加数,方法将两个参数进行加法运算后返回相加结果。
考虑可能针对不同的数据类型进行计算,重载一组方法,包括整型、长整型、浮点型、双精度浮点型、还有字符
串。
在main方法中创建Addition类的实例分别调用重载方法测试其效果。应将Addition类打入到包中以自己名字为包命
名。
分析:Addition类中所提供的方法不需要存储数据,所以这个类应该是一个工具类【所有的方法都不是静态的】或
者使用单例模式【不允许多次创建对象】

//单例写法
public class Addition1 {
private Addition1() {
}
private static Addition1 instance = new Addition1();
public static Addition1 getInstance() {
return instance;
}
public String add(String s1,String s2){
return s1+s2;
}
public int add(int s1,int s2){
return s1+s2;
}
}
//调用
Addition1 a1=Addition1.getInstance();
int res=a1.add(1,2);
//工具类,可以参照java.lang.Math数学库,不允许创建对象
public class Addition {
// 保证这个类不允许new对象
private Addition() {
}
public static String add(String s1, String s2) {
return s1 + s2;
}
public static int add(int s1, int s2) {
return s1 + s2;
}
}
//将计算方法分为Number类型【数值型】和String字符串类型两种
// Number类型是所有数值类型数据的父类型
public static Number add(Number s1, Number s2) {
if (s1 != null && s2 != null) {
if (s1 instanceof Double || s2 instanceof Double) {
return s1.doubleValue() + s2.doubleValue();
} else if (s1 instanceof Float || s2 instanceof Float) {
return s1.floatValue() + s2.floatValue();
} else if (s1 instanceof Long || s2 instanceof Long) {
return s1.longValue() + s2.longValue();
} else if (s1 instanceof Integer || s2 instanceof Integer) {
return s1.intValue() + s2.intValue();
} else if (s1 instanceof Short || s2 instanceof Short) {
return s1.shortValue() + s2.shortValue();
} else if (s1 instanceof Byte || s2 instanceof Byte)
return s1.byteValue() + s2.byteValue();
}
return null;
}
//针对计算双方都是字串的处理
public static String add(String s1, String s2) {
return s1+s2;
}
//这个题目的重点是null在方法重载中的处理,如果有一方是String,另外一方是null,实际上运行的是
add(String,String)
//这个方法可以匹配参与计算的一方为String类型,另外一方是任意类型的时候.这里实际上就是提供了一方是
String,另外一方是Number的时候
public static Object add(Object s1,Object s2){
if(s1 instanceof String || s2 instanceof String){
return add(s1.toString(),s2.toString());
}
return null;
}

更多推荐

面向对象实例编程

本文发布于:2024-02-19 15:28:28,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1764744.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:面向对象   实例

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!