Java学习——面向对象1

1、面向过程和面向对象

可以理解为程序设计的一种风格或思想

面向过程的程序设计语言(POP):它的关注焦点是过程,是以函数为基本结构进行代码组织,在解决问题时,是以一种执行者的思维,分析实现所需步骤,并一步步实现

代表语言:C语言

相对于面向对象语言的不足:扩展能力差、后期维护难度较大

面向对象的程序设计语言(OOP):它的关注焦点是类,参照现实中事物,将事物的属性特征、行为特征抽象出来,用类来表示

典型语言:C++、Java,python等

代码结构是以类为组织单位,每种事物都有自己的属性和功能

是一种设计者思维,适合解决复杂问题。代码扩展性强、可维护性高

面向过程比较适合简单的按照一步一步的步骤来实现的问题

面向对象适合解决复杂的问题,先从宏观上来分析问题,设计一类问题的解决方法,并将其封装起来,等用到这一类时,就可以直接找一类,但在程序落地的时候,依旧需要用面向过程的思想来实现具体方法,二者相辅相成

2、类和对象

这两个概念是面向对象的核心概念

【类】:具有相同特征事物的抽象描述(定义),也可以理解为概念、模板

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

人类——>一类群体,抽象概念

张三——>一个具体的人,即对象

类的结构{

• 变量:事物属性的描述(名词)

• 方法:事物的行为(可以做的事情 动词)

• 构造方法:初始化对象

• 块:一段没有名称的代码块

• 内部类: 即在类体中声明的

}

类的创建:(1)抽象化的过程,即发现类,在该过程中,需要我们根据这一类事物的特征,抽象出它们的特征,归纳为一个类;

访问修饰符有两种:public,无(默认)

修饰符:final,abstract

关键字class用来定义一个类

//类名的创建规范:首字母需大写,类名需见名知义,并且在多单词时,每个单词首字母大写
public class 修饰类 Car(类名){
    
}

(2)定义类中的成员变量(发现类的共有属性)

成员变量:成员变量是定义在类中,方法体之外的变量。它可以使用任何一种数据类型,作用范围为整个类体。

注:在定义成员变量时,如果未对其进行初始化,那么系统会默认对其进行初始化。

成员变量可以被类中方法、构造方法和特定类的语句块访问。

public class Car{
  //成员变量定义
  String name; //名称
  String color; // 颜色
  float price;//价格
}
/*
在方法中定义的变量为局部变量,注意,局部变量不会自动初始化
方法的参数也是局部变量
*/

(3)定义类中的成员方法(发现类的共有方法)

public class Car{
  //成员方法定义
  public void start(){  //汽车启动
  System.out.println("汽车启动");
  [return 返回值;]
  }
  public void stop(){  //汽车停止
  System.out.println("汽车停止");
  [return 返回值;]
  }
}

创建并使用对象

public class TestCar {
​
    public static void main(String[] args) {
        /*
            Car car = new Car();
            new Car();  new关键字用来创建对象,以Car类为模板,块独立的空在内存中开辟一间,用来存储对象信息
                Car()构造方法,每个类中默认都有一个,方法名字与类名相同的
            Car(类型) car(变量名) 声明一个Car类型的变量
                 = 把右边的对象地址赋给左边的变量,用变量在后面的程序中表示内存中的对象
         */
                Car car = new Car();
                    car.name =  "宝马";
                    car.color="黑色";
                    car.price= 500000;
                    car.run(120);
                    car.stop();
​
                Car bccar = new Car();
                    bccar.name = "奔驰";
                    bccar.color = "红色";
                    bccar.price = 400000;
                    bccar.run(100);
                    bccar.stop();
                /*
                    使用对象名.属性或对象名.方法的方式访问对象成员
                    类中的成员变量和成员方法都必须通过创建出来的对象调用
                 */
​
    }
}

构造方法

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

特点:类中没有定义时,会默认有一个无参的构造方法,在无参构造方法中为成员变量赋初始值. 我们还可以定义有参的构造方法,通过有参的构造方法为成员变量进行初始化赋值 一旦类中定义了有参的构造方法,那么默认的无参构造方法便会失效

作用:用来为新创建的对象中的成员变量进行初始化

Car bmcar = new Car();
        bmcar.name = "宝马";
        bmcar.color = "黑色";
        bmcar.price = 300000;
​
        Car bccar = new Car("奔驰","红色",400000);
        Car dzcar = new Car("大众","白色",500000);
        Car adcar = new Car("奥迪",500000,"白色");
​
        System.out.println(bccar.name+":"+bccar.price+":"+bccar.color);
        System.out.println(dzcar.name+":"+dzcar.price+":"+dzcar.color);
​

方法重载 定义:在一个类中,有多个方法名相同,但参数个数不同的方法,称为方法重载 区分:通过参数的个数,类型,顺序来进行区分名称相同的多个方法 意义:做同一件事,但是可以传入不同的参数 注意:方法的重载与方法的返回值没有任何关系

/*参数不同具体有三:
• 数量不同
• 类型不同
• 顺序不同
*/
public Car(){
          System.out.println("无参构造方法");
          name=null;
          color=null;
          price=0;
      }
      public  Car(String n,String c,int p){
          System.out.println("有3个参数的构造方法1");
          name=n;
          color=c;
          price=p;
      }
      public  Car(String n,int p,String c){
            System.out.println("有3个参数的构造方法2");
            name=n;
            color=c;
            price=p;
      }
​
      public void run(){
          System.out.println(name+"汽车以"+60+"速度行驶");
      }
      public void run(int speed){
          System.out.println(name+"汽车以"+speed+"速度行驶");
      }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值