补充知识:成员方法的分类
1)按照返回值划分:有明确返回值方法,返回void类型方法
2)按照形式参数划分:无参方法,有参方法
1.定义一个没有返回值,没有参数的成员方法
class Function{
//定义一个没有返回值,没有参数的成员方法
public void fun1(){
System.out.println("这是一个没有返回值,没有参数的方法");
}
}
public class FunctionDemo {
public static void main(String[] args) {
//创建Function类的对象
Function function = new Function();
//没有返回值的方法,直接调用可以输出结果
function.fun1();
}
}
2.定义一个没有返回值,有参数的成员方法
class Function{
//定义一个没有返回值,有参数的方法
public void fun2(String name){
System.out.println("这是没有返回值,有参数的方法;"+name);
}
}
public class FunctionDemo {
public static void main(String[] args) {
//创建Function类的对象
Function function = new Function();
//没有返回值的方法,直接调用可以输出结果
function.fun2("你好");
}
}
3.定义一个有返回值,没有参数的成员方法
class Function{
//定义一个有返回值,没有参数的方法
public String fun3(){
return "你好世界";
}
}
public class FunctionDemo {
public static void main(String[] args) {
//创建Function类的对象
Function function = new Function();
//有返回值的方法,调用的时候,需要用一个变量接收返回值或者直接使用
String s1 = function.fun3();
System.out.println(s1);
}
}
4.定义一个有返回值,有参数的成员方法
class Function{
//定义一个有返回值,有参数的方法
public String fun4(String s){
return s+"你好";
}
}
public class FunctionDemo {
public static void main(String[] args) {
//创建Function类的对象
Function function = new Function();
//有返回值的方法,调用的时候,需要用一个变量接收返回值或者直接使用
String s2 = function.fun4("小宋");
System.out.println(s2);
}
}
面向对象练习题
1.定义一个类Demo,其中定义一个求两个数据和的方法,定义一个测试类Test,进行测试
方式1:虽然实现了两个数求和,但是值是固定的,没有灵活度
class Demo{
int a = 10;
int b = 20;
public int sum(){
return a+b;
}
}
public class Test1 {
public static void main(String[] args) {
Demo demo = new Demo();
int sum = demo.sum();
System.out.println(sum);
}
}
方式2:
class Demo{
public int sum(int a,int b){
return a+b;
}
}
public class Test1 {
public static void main(String[] args) {
Demo demo = new Demo();
int sum = demo.sum(10,20);
System.out.println(sum);
}
}
方式3:使用面向对象的思想
class Demo{
private int a;
private int b;
Demo(int a,int b){
this.a = a;
this.b = b;
}
public int sum(){
return a+b;
}
}
public class Test1 {
public static void main(String[] args) {
Demo demo = new Demo(100,200);
int sum = demo.sum();
System.out.println(sum);
}
}
注:这道题最好的解决方法是方式2。方式3虽然使用了面向对象的思想,但是忽略了一个问题,什么情况下使用面向对象?当成员变量是该类的相关属性的时候,可以去定义为成员变量。而这里的a,b仅仅表示的是一个方法中的两个参数,与我们的Demo类没关系
2.定义一个长方形类,定义求周长和面积的方法,然后再定义一个测试类Test2,进行测试
class Rectangle {
//由于长、宽都是用来描述长方形的,和类有关系,是该类的属性
//所以定义成成员变量
private int length;
private int width;
public Rectangle(int length, int width) {
if(width<=length){
this.length = length;
this.width = width;
}else{
System.out.println("输入的数据不正确,请检查长宽的大小是否符合标准");
}
}
//定义求长方形的周长的方法
public int getGirth() {
return 2 * (length + width);
}
//定义求长方形的面积的方法
public int getArea() {
return length * width;
}
}
public class Test2 {
public static void main(String[] args) {
//使用构造方法赋值
Rectangle rectangle = new Rectangle(5, 10);
int girth = rectangle.getGirth();
System.out.println("周长为:"+girth);
int area = rectangle.getArea();
System.out.println("面积为:"+area);
}
}
3. 定义一个MyMath类,提供基本的加减乘除功能,然后进行测试
import java.util.Scanner;
class MyMath {
private int num1;
private int num2;
public MyMath() {
}
public MyMath(int num1, int num2) {
this.num1 = num1;
this.num2 = num2;
}
//加法运算
public int add() {
return num1 + num2;
}
//减法运算
public int sub() {
return num1 - num2;
}
//乘法运算
public int mul() {
return num1 * num2;
}
//除法运算
public double div() {
return (num1 * 1.0) / num2;
}
}
public class MyMathDemo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数据:");
int number1 = sc.nextInt();
System.out.println("请输入第二个数据:");
int number2 = sc.nextInt();
MyMath myMath = new MyMath(number1, number2);
System.out.println("两数之和为:" + myMath.add());
System.out.println("两数之差为:" + myMath.sub());
System.out.println("两数之积为:" + myMath.mul());
System.out.println("两数之商为:" + myMath.div());
}
}