面向对象与面向过程;重载。(图解)

一:理解:

       题目:人把大象装进冰箱;

  1. 面向过程:

(1)、打开冰箱;

(2)、把大象放进冰箱;

(3)、关闭冰箱。

       2、面向对象:

              人{

                     打开(冰箱){     冰箱.开开();}

                     操作(大象){     大象.进入(冰箱);}

                     关闭(冰箱){     冰箱.合上();}

}

大象{

       进入(冰箱){     }

}

冰箱{

        开开(){    }

        合上(){    }

}

不管一个项目或工程有多大,一定是有一个一个的类构成的。

 

面向对象的编程关注于类的设计:

         

一:一道基础菜(用eclipse)

1

//一、面向对象思想的法则之一:

        1)、设计类,并设计类的成员(成员变量&成员方法);

        2)、通过类,来创建类的对象(也称作类的实例化);

        3)、通过对象.属性对象.方法来调用,完成相应的功能。

//二、创建的多个对象彼此之间可以互相赋值,单独定义多个对象时,对象之间无任何联 等系。

//三、类的属性(成员变量):

    成员变量 VS 局部变量

    相同点:1、遵循变量声明的格式:数据类型 变量名=初始值;

2都有作用域;

    不同点:1、声明位置不同:成员变量声明在类里,方法外

                           局部变量声明在方法内,方法的形参部分,代码块内

2、成员变量的修饰符有四个:publicprotectedprivate、缺省;

    局部变量没有修饰符,与所在的方法修饰符   

3 初始化值:一定会有初始化。

    成员变量:如果在声明的时候,不显示的赋值,那么不同数据类型会有不同的默认初初始化值。

    局部变量:一定要显式的赋值,不会有默认的值。

4、二者在内存中存放的位置不同:成员变量存在于堆空间中,局部变量存在于栈空间中。

总结:

    关于变量的分类:1)、按照数据类型的不同,基本数据类型(8种)&引用数据类型(数组等)

                   2)、按照声明的位置:成员变量 & 局部变量。

//四、类的方法:提供某种功能的实现

            1Public      void      eat(String name){ …功能 }

              权限修饰符  返回值类型   方法名(形参)

2、方法内可以调用本类的其他方法或函数,但是不能在方法内再定义方法。

package day03;    

import java.util.Scanner;



public class test{

    public static void main(String[] args) {

        Person p=new Person();         //实例化Person类的对象

        p.info();          //调用Person类中的方法(函数),也可调用属性(变量)

        p.setName(“付昊”);

    }

}



class Person{      //类;抽象的。

    //1、属性

    String name;

    int age;

    boolean sex;

   

    //2、方法

    public void eat() {

        System.out.println("吃啊");

    }

    public void sleep() {

        System.out.println("睡觉");

    }

    public String getName() {

        return name;

    }

    public void setName(String n) {   //n是局部变量。

//给name属性赋值等价于在main方法中用p.name=“  ”;

        name=n;

    }

    public void info() {

        eat();

        sleep();

        getName();

        System.out.println("好了。");

    }

}



/* 扩展:Scanner s=new Scanner(system.in);    需要import java.util来告诉Scanner类从哪里来的。*/

 

 

2、类对象的内存解析图:

 

二、习题菜:

package test;



public class TestPerson {

    public static void main(String[] args) {

        Person p=new Person();

        p.study();

        p.showAge();

        p.addAge(2);

        p.showAge();

       

        Person p1=new Person();

        p1.showAge();

    }

}

class Person{

    //1、属性

    String name;

    int age;

    int sex;

    //2、方法

    public void study() {

        System.out.println("studying");

    }

    public void showAge() {

        System.out.println(age);

    }

    public int addAge(int i) {

        age+=i;

        return age;

    }

}
  1. 求圆的面积:
package test;



public class TestCircle {

public static void main(String[] args) {

    Circle circle=new Circle();

    circle.radius=3.2;

    circle.findArea();

    System.out.println();

    circle.setRadius(9.0);

    circle.findArea();

}  

}



class Circle{

    double radius=1.0;

//提供方法,用于获取圆的面积

public void findArea() {

        System.out.println(3.14*radius*radius);

    }

public double getRadius() {       //返回圆的半径

    return radius;

}

public void setRadius(double r) {     //设置圆的半径

    radius=r;

}

}

3、求数组最大值等等的程序

package test;



public class ArrayUtil {

    //求数组最大值

    public int getMax(int[] arr) {

        int max=arr[0];

        for(int i=0;i<arr.length;i++) {

            if(arr[i]>max)

                max=arr[i];

        }

        return max;

    }

    //求数组最小值

    public int getMin(int[] arr) {

        int min=arr[0];

        for(int i=0;i<arr.length;i++) {

            if(arr[i]<min)

                min=arr[i];

        }

        return min;

    }

    //遍历数组元素

    public void printArray(int[] arr) {

        System.out.println("[");

        for(int i=0;i<arr.length;i++) {

            System.out.println(arr[i]+"\t");

        }

        System.out.println("]");

    }

    //求数组的平均值

    public int avg(int[] arr) {

        int sum=getSum(arr);

        return sum/(arr.length);

    }

    //求数组的总和

    public int getSum(int[] arr) {

        int sum=0;

        for(int i=0;i<arr.length;i++) {

            sum+=arr[i];

        }

        return sum;

    }

    //数组的反转

    public int[] reverse(int[] arr) {

        for(int i=0,y=arr.length-1;i<y;i++,y--) {

            int temp=arr[i];

            arr[i]=arr[y];

            arr[y]=temp;

        }

        return arr;

    }

    //实现数组的复制

    public int[] copy(int[] arr) {

        int[] arr2=new int[arr.length];

        for(int i=0;i<arr.length;i++) {

            arr2[i]=arr[i];

        }

        return arr2;

    }

    //对数组进行排序

    public void sort(int[] arr,String desc) {

        if(desc=="asc") {

            for(int i=0;i<arr.length-1;i++)  {

                for(int j=0;j<arr.length-1-i;j++) {

                   if(arr[j]>arr[j+1]) {

                       int temp=arr[j];

                       arr[j]=arr[j+1];

                       arr[j+1]=temp;

                   }

                }

            }

        }else if(desc=="desc") {

            for(int i=0;i<arr.length-1;i++)  {

                for(int j=0;j<arr.length-1-i;j++) {

                   if(arr[j]<arr[j+1]) {

                       int temp=arr[j];

                       arr[j]=arr[j+1];

                       arr[j+1]=temp;

                   }

                }

            }

        }else {

            System.out.println("您输入的排序方式有误!");

        }

    }

}

package test;



public class TestArray {

    public static void main(String[] args) {

        int[] arr=new int[] {12,23,442,21,32,99,9,98};

       

        ArrayUtil au=new ArrayUtil();

        int max=au.getMax(arr);

        System.out.println("数组最大值="+max);

        int min=au.getMin(arr);

        System.out.println("数组最小值="+min);

        int avg=au.avg(arr);

        System.out.println("平均值="+avg);

       

        au.printArray(arr);    //打印数组

       

        au.reverse(arr);       //反转数组

        au.printArray(arr);

       

        au.sort(arr, "desc");  //从大到小排序

        au.printArray(arr);

       

        au.sort(arr, "asc");   //从小到大排序

        au.printArray(arr);

    }

}



/*方法重载的条件:

1)、方法定义在同一个类中;

2)、方法名必须相同;

3)、方法的参数列表不同(参数的个数不同或者参数的类型不同)

补充:方法的重载与方法的返回值类型没有任何关系只是看函数名与形式参数类型

例子:

void show(int a,char b,double c){ …   }

double show(int x,char y,double z){   …   }

不是互为重载函数。*/

       


 

package day03;



import java.util.Scanner;



public class test{

    public static void main(String[] args) {

        test t=new test();

        t.mOL(2);

        t.mOL(3,5);

        t.mOL("Hello,World!!!");

    }

    //以下三个方法为重载

    public void mOL(int i) {

        System.out.println(i*i);

    }

    public void mOL(int i,int j) {

        System.out.println(i*j);

    }

    public void mOL(String str) {

        System.out.println(str);

    }

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值