Java面向对象

本节多为概念性笔记

目录


前言

从本次开始,进入到java的面向对象类型


一、面向对象和面向过程

面向过程和面向对象都是程序设计的一种风格(思想)

1.面向过程:

(procedure -Oriented Programming),简称POP

是以函数(一个一个的功能)为结构进行代码组织

解决问题时,分析实现所需的步骤,然后一步一步实现即可

代表语言:C语言

相对于面向对象语言,扩展能力差,后期维护难度较大

2.面向对象

是以类为单位进行组织,类:一类问题/分类 String,Math,Arrays,Scanner

public class 人类{

定义人有什么属性(变量)

人有什么功能(方法)

}

典型语言:c++,c#,Python,Java,Ruby

比如:

动物类{

   动物共有属性和功能(代码复用)

}

猫   继承    动物{

​       定义自己特有的属性和功能(扩展自己的功能)

}

狗   继承    动物{

​       定义自己特有的属性和功能

}

是一种设计者思想,适合解决复杂的问题,扩展性,维护性更好

开着动作简单,面向过程的思想就可以解决

造车就比较复杂,适合使用面向对象思想,要分类

面向过程适合简单的问题

面向对象适合复杂的问题,先宏观的分类设计,具体某一个步骤落地时,又需要面向过程,他们是相辅相成的

二、类和对象

1.类

具有相同特征的事物的抽象描述(定义)

同一类事物的抽象描述(定义) 概念,模板

类中可以定义:

变量 属性 名词

方法 行为 动词

2.对象

对象:是类的一个实例,是以类为模板在内存中创建的实际存在的实例

该类事物具体存在的一个个个体,是真实存在的,也称为实例

万事万物(大千世界具体存在的对象)皆为对象.

人类-->一类群体 概念

张三-->具体的人 对象

电脑-->一类电脑

我的电脑-->可以使用的,具体,对象

编程是对现实生活事物的体现,根据现实事物进行(定义).

先设计类(定义某一类事物的功能)

三.构造方法

块 没有名字的一个代码块

内部类 在类的内部定义类(嵌套)

public class 修饰类 Car(类名)
类名:类名首字母大写
/*
    定义属性  成员变量  直接在类{}中定义的内容,称为类的成员
     */
变量按位置分:
基本数据类型
引用数据类型
成员变量(在类中定义):
Java中的变量使用前必须初始化
成员变量可以不对其初始化,系统会自动对其初始化 
定义方法 成员方法
方法是类中具有的某种功能

例:

public class Car {
    
    String name;
    String color;
    int price;
    String model;
    int[] a;

  
    public void run(int speed) {
        int a;
        a = 10;
        System.out.println(a);
        System.out.println(name + "汽车以" + speed + "速度行驶");
    }

    public void run() {
        System.out.println(name + "汽车行驶");
    }

    public void stop() {
        System.out.println(name + "汽车停止");
    }

    public void piaoyi() {
        System.out.println(name + "汽车漂移");
    }

}
public class TestCar {
    public static void main(String[] args) {
       
        Car car = new Car();
        car.name = "红旗";
        car.color = "黑色";
        car.model = "H4";
        car.price = 5000000;
        car.run();
        car.stop();
        car.piaoyi();

        Car bccar = new Car();
        bccar.name = "奔驰";
        bccar.color = "红色";
        bccar.price = 400000;
        bccar.run();
        bccar.stop();
        bccar.piaoyi();
        bccar.run(120);
      
    }
}

其中:

Car car = new Car();
new Car(); new关键字用来创建对象,以Cae类为模板,在内存中开辟一块儿空间,用来存储对象中的信息
Car()构造方法,每个类中默认都有一个,方法名字与类名相同
Car(类型) car(变量名) 声明一个Car类型的变量
= 把右边的对象地址赋给左边的变量,用变量在后面的程序中表示内存中的对象

四、方法重载

定义:

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

五、对象与引用

Car:类的构造方法,类中没有定义时,会默认有一个午餐的构造方法
构造方法的名字与类相同
定义:构造方法名字与类相同,且没有返回值,且不需要使用void修饰
特点:
类中没有定义时,会默认一个无参的构造方法,在无参构造方法中为成员变量赋初始值,
我们还可以定义有参的构造方法,通过有参的构造方法中为成员变量赋初始值
一旦类中定义了有参的构造方法,那么默认的无参构造方法便会失效
如果需要,需要显示的定义无参构造方法
作用:
用来为新创建的对象中的成员变量进行初始化

例:

public class Car {
    String name;
    String color;
    int price;

 

    public Car(){
        System.out.println("无参构造方法");
        name=null;
        color=null;
        price=0;
    }

    public  Car(String c,int p,String n){
        System.out.println("有3个参数的构造方法");
        name=n;
        color=c;
        price=p;
    }

    public  Car(String n,String c,int p){
        System.out.println("有3个参数的构造方法");
        name=n;
        color=c;
        price=p;
    }

    public void run(){
        System.out.println(name+"汽车以"+60+"速度行驶");
    }

    public void run(int speed){
        System.out.println(name+"汽车以"+speed+"速度行驶");
    }
}
public class TestCar {
    public static void main(String[] args) {
       
        Car bmcar=new Car();
        bmcar.name ="宝马";
        bmcar.color="黑色";
        bmcar.price=50000;

        Car bccar=new Car("奔驰", "红色", 400000);
        Car dzcar=new Car("白色", 200000,"大众" );

        System.out.println(bccar.name+":"+bccar.price+":"+bccar.color);
        System.out.println(dzcar.name+":"+dzcar.price+":"+dzcar.color);

    }
}

总结

概念较多,容易混淆,辨别好面向对象和面向过程这两种思想的区别

清楚类和对象,熟练运用,可以根据要求进行类和对象的定义

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘伊珂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值