实验二 类与对象
一、实验目的及要求
1.实验目的
掌握如何使用类来创建、封装对象;
掌握如何定义和构造一个类;
掌握方法重载与多态;
掌握对象的组合、参数传值的方法;
理解并掌握类变量与实例变量、以及类方法与实例方法的区别。
2.实验要求
理解并掌握类与对象的各种基本概念;
掌握如何定义类和创建对象;
掌握如何编写程序对基本概念进行验证,并确定概念是否正确理解;
对实验中出现的各种问题进行分析、总结。
二、实验环境
硬件要求:一台电脑(带Windows 10操作系统)
软件要求: JDK-14.0.2,Intellij IDEA 2020.1.2
三、实验内容(实验方案、实验步骤、设计思路等)
实验方案:将编写好的Java类文件生成运行,看是否符合预期效果。
实验步骤:创建Java项目、Java类文件,编写代码并生成Java程序运行,检验。
设计思路:
先创建Java项目、包、Java类文件;
编程创建一个类Phone(手机),一个类Property(属性); a) 编程定义各类实例变量、实例函数、类变量、类函数; b) 编程实现对象组合、构造函数、重载与多态等功能; c) 在主函数中建立一个Phone类的对象phone来设置手机的相关数据; d) 通过show()函数输出; e) 通过Qusetion_one()和Question_two()函数提问是否联网、是否播放音乐; f) 通过键盘输入是、否进行选择;
完善相关功能及代码,生成Java程序运行,检查结果是否正确,完成实验报告。
四、实验结果与分析
五、附源代码
package experiment.two;
import java.util.Scanner;
class Property//定义类
{ //定义属性
protected String name;//品牌名
protected String Network_Support;//所支持网络运营商
protected String Volume;//铃声
public Property(String name,String Network_Support,String Volume)
{//有参构造方法
this.name=name;
this.Network_Support=Network_Support;
this.Volume=Volume;
}
}
class Phone//定义类
{
//定义属性
protected String size;//实例变量:尺寸
protected String color;//实例变量:颜色
protected String RAM;//实例变量:内存
protected String pixel_front;//实例变量:前镜头像素
protected String pixel_rear;//实例变量:后镜头像素
protected static String length;//类变量:长度
protected static String width;//类变量:宽度
protected static String thickness;//类变量:厚度
protected Property property;//对象组合 声明Property类的对象
public Phone(String name,String Network_Support,String Volume)
{//有参构造方法
this.property=new Property(name,Network_Support,Volume);//对象组合
}
public static String get_Size(double l,double w,double t)
{//重载方法 类方法
length=String.valueOf(l);//将数字转变为字符串
width=String.valueOf(w);//将数字转变为字符串
thickness=String.valueOf(t);//将数字转变为字符串
return length+"mm"+" × "+width+"mm"+" × "+thickness+"mm";
}
public void get_Phone(int ram1,int ram2)
{//重载方法 实例方法
String r1,r2;
r1=String.valueOf(ram1);//将数字转变成字符串
r2=String.valueOf(ram2);//将数字转变成字符串
RAM=r1+"GB+"+r2+"GB";
}
public void get_Phone(String c1, String c2)
{//重载方法 实例方法
String cs1,cs2;
cs1=c1.trim().substring(0,c1.indexOf("色"));//去除字符串前后所有空格、截取字符串
cs2=c2.trim().substring(0,c2.indexOf("色"));//去除字符串前后所有空格、截取字符串
color=cs1+"+"+cs2+"色";
}
public void get_Phone(int f,int r1,int r2,int r3)
{//重载方法 实例方法
String Front,Rear1,Rear2,Rear3;
Front=String.valueOf(f);//将数字转变成字符串
Rear1=String.valueOf(r1);//将数字转变成字符串
Rear2=String.valueOf(r2);//将数字转变成字符串
Rear3=String.valueOf(r3);//将数字转变成字符串
pixel_front=Front+"万像素";
pixel_rear=Rear1+"万+"+Rear2+"万+"+Rear3+"万像素";
}
public void get_Network(String whether)//行为:联网
{
switch (whether)
{
case "是":
System.out.println(property.name+"手机已成功联网,网络运营商为:"+property.Network_Support);
break;
case "否":
System.out.println(property.name+"手机未能成功联网");
break;
default:break;
}
}
public void get_Volume(String whether)
{//行为:播放铃声
switch (whether)
{
case "是":
System.out.println(property.name+"手机已成功播放铃声:"+property.Volume);
break;
case "否":
System.out.println(property.name+"手机未能成功播放铃声");
break;
default:break;
}
}
public void show() //输出手机的相关参数
{
System.out.println("手机:"+property.name);
System.out.println("内存:"+RAM);
System.out.println("尺寸:"+size);
System.out.println("前镜头像素:"+pixel_front+" 后镜头像素:"+pixel_rear);
System.out.println("颜色:"+color);
System.out.println("网络运营商:"+property.Network_Support);
System.out.println("铃声:"+property.Volume);
}
public void Question_one()//定义问题:提问是否要联网
{
System.out.println("请问是否需要联网? (请输入“是”或“否”)");
}
public void Question_two()//定义问题:提问是否播放铃声
{
System.out.println("请问是否播放铃声? (请输入“是”或“否”)");
}
}
public class program_1 {
public static void main(String[] args) {
Phone phone=new Phone("华为mate20","电信","《Dream It Possible》");
//创建对象并初始化
phone.get_Phone(16,256);//多态
phone.get_Phone("深蓝色","亮白色");//多态
phone.get_Phone(2400,1200,1600,800);
phone.size=phone.get_Size(158.2,77.2,8.3);//调用类函数
phone.show();//调用函数,输出手机相关参数
phone.Question_one();//调用函数,提问是否联网
Scanner scanner1=new Scanner(System.in);//调用系统类,通过键盘输入数据
String w1=scanner1.nextLine().trim();//读取输入内容并去除前后空格
phone.get_Network(w1);//调用函数,联网
phone.Question_two();//调用函数,提问是否播放铃声
Scanner scanner2=new Scanner(System.in);//调用系统类,通过键盘输入数据
String w2=scanner2.nextLine().trim();//读取输入内容并去除前后空格
phone.get_Volume(w2);//调用函数,播放铃声
}
}