面向对象程序设计

目录

     1.1面向对象的概述

       1.1.1面向对象程序设计

       1.1.2面向对象设计过程 

       1.1.3面向对象的特点

    1.2类和对象

       1.2.1类和对象的定义

       1.2.2类和对象的举例

    1.3类的定义

           1.3.1类的定义格式

           1.3.2创建对象

           1.3.3成员变量的默认值

           1.3.4构造方法

           1.3.5方法的重载

           1.4值传递和引用传递


     1.1面向对象的概述

       1.1.1面向对象程序设计

       1.1.2面向对象设计过程 

       1.1.3面向对象的特点

    1.2类和对象

       1.2.1类和对象的定义

       1.2.2类和对象的举例

    1.3类的定义

           1.3.1类的定义格式

           1.3.2创建对象

           1.3.3成员变量的默认值

           1.3.4构造方法

           1.3.5方法的重载

           1.4值传递和引用传递

1.1面向对象的概述

1.1.1面向对象的程序设计

面向对象的程序设计思想 (Object Oriented Programming) 简称:OPP

面向对象就是把现实中的各种属性都抽象成程序设计中的“对象”,一切皆为对象,是一种“自下而上”的设计思想,首先设计各个组件,然后对其进行组装。与之相对应的还有面向过程的程序设计(procedure-Oriented Programming) 简称:POP,面向过程是一种“自上而下”的设计思想,首先定义好一个框架或者思考解决问题的步骤,然后将每一个步骤逐步实现。通俗理解就是先写一个main()函数,然后使用多个子函数来实现其最终的功能。面向过程最大的劣势就是无法解决复杂的系统,相对于面向对象的语言难以维护,也不能复用,想要扩展更多的功能也很困难。与之对应,面向对象容易维护,容易复用,扩展性强。面向对象都以类为组织单位,将抽象出来的对象都用类来表示。

1.1.2面向对象设计过程

1.1.3面向对象的特点

面向对象三大特征:封装,继承,多态。

1.2类和对象

1.2.1类和对象的定义

 类:类是一组相关属性和行为的集合。可以看成是一类事物的模板,使用事物的属性特征和行为特征描述该类事物。

对象:万事万物,皆为对象。
        实际存在的该类事物的每个个体,是具体的,因此也是实例。

举个例子:

 人类:--->一类群体 概念
 张三:--->具体的人 对象

1.2.2类和对象的举例

小猫和小狗都是动物,我们就可以创建一个类把小猫和小狗共同的属性和功能抽象出来。
           public class 动物{
                动物的属性;(变量)名字 年龄 毛色 
                动物的功能;(方法)走 跑 叫
           }
           小猫可以继承动物的属性和功能然后再加上自己特有的属性和功能。
           小猫 继承 动物{
               小猫特有的属性:  
               小猫特有的功能; 爬树 抓老鼠
           }

1.3.1类的定义格式

public class 类名{
      //成员变量
      //成员方法
}

成员变量:

成员变量:定义在类中方法外的变量。
成员变量可以使用java语言中任意一种数据类型,包括基本数据类型和引用数据类型(用类作为类型String 数组)。

成员变量可以在定义时对其进行初始化,如果没有进行初始化,java会用默认值对进行初始化。
成员变量可以被类中的方法,构造方法,代码块中使用。

成员方法:

不能加static

举个例子:
 

public class Car {
   
    String name;  //成员变量,未手动初始化则被赋予默认值null
    String color;
    float price;
    /*
    成员方法
    */
    public void run(int speed){
        System.out.println(name+"汽车以"+speed+"的速度启动");
    }
    public void stop(){
        System.out.println("汽车暂停");
    }
}

1.3.2创建对象

创建对象:

类名 对象名 =new 类名();

使用对象访问类中的成员

对象名.成员变量;
对象名.成员方法();

举个例子:

public class Textcar {
    public static  void main(String[] args){
        int a=3;
        System.out.println(a); //局部变量,需手动进行初始化。在方法或者代码块上声明。
        Car car=new Car();
        car.name="比亚迪";
        car.color="磨砂黑";
        car.price=200000.0f;
        car.run(120); //speed也属于局部变量
        car.stop();

        Car carbd=new Car();
        System.out.println(carbd.name);  //测试name默认初始化的值为null
        carbd.name="别克";
        carbd.color="银色";
        carbd.price=150000.0f;
        carbd.run(110);
        carbd.stop();
    }

上述代码访问的类就是上边创建的那个类Car。

1.3.3成员变量的默认值

数据类型默认值
基本类型整数(byte,short,int,long)0
浮点数(float,double)0.0
字符(char)"\u00000"
布尔(boolean)false
引用数据类型数组,对象,Stringnull

1.3.4构造方法

 构造方法名名字与类名相同,且没有返回值,且不需要使用void修饰。

 作用:用来为新创建的对象中的成员变量进行初始化。
 特点:类中没有定义时,会默认有一个无参的构造方法,在无参结构方法中为成员变量赋予初始   值。我们还可以定义有参的构造方法,通过有参的构造方法为成员变量进行初始化。 一旦类中定   义有参的构造方法,那么默认的那个无惨构造方法失效。

举个例子:

package day01A;

public class Car {
    String name;
    String color;
    float price;
    //构造方法
    public  Car(){
        System.out.println("无参构造方法");
        name=null;
        color=null;
        price=0.0f;
    }
    public Car(String n,String c,float p){
        System.out.println("有参构造方法1");
        name=n;
        color=c;
        price=p;
    }
    public Car(String c,float p,String n){
        System.out.println("有参构造方法2");
        color=c;
        name=n;
        price=p;
    }


}
public class Textcar {
    public static void main(String[] args){
        Car bccar=new Car("奔驰","磨砂黑",400000f);
        Car bmcar=new Car();
        Car adcar=new Car("银色",3500000f,"奥迪");
    }
}

1.3.5方法的重载

是指一个类中具有相同的名字,但参数不同的多个方法。
通过参数的个数,类型,顺序来进行区分。

我将通过一个判断最大数的代码向你展示:
 

public class MyMath {
    public void max(int x,int y){
        int z= (x>y)?x:y;
        System.out.println(z);
    }
    public void max(double x,double y){
        double z=(x>y)?x:y;
        System.out.println(z);
    }
    public void max(int x,int y,int z){
        int a=(x>y)?x:y;
        int b=(a>z)?a:z;
        System.out.println(b);
    }
    public void max(double x,double y,double z){
        double a=(x>y)?x:y;
        double b=(a>z)?a:z;
        System.out.println(b);
    }
}

以上类中四个方法均以max来命名,但是它们参数的个数,类型均不相同,这就是参数重载。

参数不同(可以有三方面的不同)

数量不同,类型不同,顺序不同。

package day01A;

public class TextMyMath {
    public static void main(String[] args){
        MyMath myMath=new MyMath();
        myMath.max(2,3);
        myMath.max(2.1,3.1);
        myMath.max(2,3,4);
        myMath.max(2.1,3.1,4.1);
    }

}

1.4值传递和引用传递

1.形参和实参

形参也叫形式参数,是一个方法的参数列表中的参数;实参也叫实际参数,是调用者在调用方法时实际传递的参数;

用代码给大家解释解释:

public class Test {
		int i;
		void change(int i){//形式参数
			i++;
		}
		void change1(Test t){//形式参数
			t.i++;
		}
		public static void main(String[] args) {
			Test ta = new Test();
			System.out.println(ta.i); //0
			ta.change(ta.i);//实际参数
			System.out.println(ta.i); //0
			ta.change1(ta); //实际参数
			System.out.println(ta.i);//1
		}
	}	

2.值传递和引用传递

值传递:(参数类型是基本数据类型):方法调用时,实参把它的值传递给对应的形参,形参只是用实参的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形参值的改变不影响实参的值。

引用传递:(参数类型是引用数据类型参数):也称为传地址。方法调用时,实参是对象(或数组),这时实参与形参指向同一个地址,在方法执行中,对形参的操作实际上就是对实参的操作,这个结果在方法结束后被保留了下来,所以方法执行中形参的改变将会影响实参。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值