Java 面向对象概念 类与引用

面向对象

面向过程与面向对象

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

面向过程的程序思想(procedure -Oriented Programming),简称POP

  • 关注焦点是过程:过程就是操作数据的步骤。如果某个过程的实现代码重复出现,那么就可以把这个过程抽取成一个函数,这样就可以大大简化沉余代码,便于维护。
  • 是以函数(一个一个的功能)为结构进行代码组织
  • 相对于面向对象语言,扩展能力差,后期维护难度较大

面向对象程序思想(Object Oriented Programming),简称OOP

  • 关注焦点是:在计算机程序设计过程中,参照现实中事物,将事物的属性特征,行为特征抽象出来,用类来表示。

  • 以类为单位进行组织,每种事物都具备自己的属性和行为/功能类:一类问题/分类 String,Math,Array,Scanner······

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

public class 类名{
    
}

**注:**千万不要把面向过程和面向对象对立起来,他们是相辅相成的。面向对象离不开面向过程!

区别:面向过程适合简单的问题.

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

类和对象(面向对象的核心概念)

类:

概念:是具有相同特征的事物的抽象描述,是对对象的概括和总结

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

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

  • 构造方法:初始化对象

  • 块:没有名字的一个代码块

  • 内部类:在类的内部定义的类

    类的声明格式
    [访问权限修饰符][修饰符]class{
    	
    }
    访问修饰符有两种public,无(默认)
    修饰符:final,abstract
    关键字class用来定义一个类
    Java类名的命名规范:
    类名首字母大写,见名知意,驼峰表示
    

对象:(Everything is an object)


eg:人类–>一类群体 概念

​ 张三–>具体的人,对象

概念:实际存在的该类事物的每个个体 ,也称为实例;以类为模板在内存中创建的实际存在的实例

  • 同一个类的每个对象有不同存储空间

package day5;

import java.sql.SQLOutput;

public class Car {
    /*
    定义属性 成员变量 直接在类{} 中定义内容,称为类的成员
     */
    String name;
    String color;
    int price;//不需要初始化
    /*
     定义方法 成员方法
     */
    public void run(){
        System.out.println("汽车行驶");
    }
    public void stop(){
        System.out.println("汽车停止");
    }
}

package day5;

public class TestCar {
    public static void main(String[] args) {
        Car car=new Car();//
        //new这个运算符来创建一个对象。new的结果是一个对象的引用
        //new以Car类为模板,块独立的空间在内存中开辟一空间,用来存储对象信息
        /*
        Car(类型)car(变量名)声明一个Car变量=[把右边的对象地址赋值给左边的变量,用变量在后面的程序中表示内存中的对象]
        */
        car.name="宝马";
        car.color="黑色";
		car.run();
    }
} 
变量按位置分
成员变量:
  • 可以使用基本数据类型,也可以使用引用数据类型.
  • java中的变量在使用时必须初始化,成员变量不对其初始化,系统会对其默认初始化为 null或0;
  • 成员变量可以在成员方法,构造方法,代码块中使用
局部变量(在方法中定义)
  • 系统不会对它自动初始化

类中的成员和成员方法都必须创建出来的对象来调用

类的构造方法

  • 定义:构造方法与类名相同,且没有返回值,且不需要void修饰
Car bmcar = new Car();
  • 特点:类中没有定义时,会默认有一个无参的构造方法,在无参的构造方法中为成员变量赋初始值;我们还可以定义有参的构造方法,通过有参构造方法为成员变量赋初值

    一旦类中定义了有参的构造方法,那么默认的无参构造方法便会失效,调用不到,如果需要,需要显示的定义无参构造方法

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

 public Car(){
        System.out.println("无参构造方法");
        name=null;
        color=null;
        price=0;
    }//无参构造
 Car car=new Car();// Car car=new Car();//无参调用
public Car(String n,String m,int p){//有参构造
        System.out.println("有参构造方法");
        name=n;
        color=m;
        price = 300000;
    }
Car dzcar=new Car("大众","黑色",30000);//有参调用

方法重载

  • 方法的重载是指一个类中具有相同的名字,但参数个数不同的多个方法
  • 如何区分名称相同的多个方法:通过参数的个数,类型,顺序来区分

注:但系统无法区分返回值类型,所以方法的重载跟返回值类型没有任何关系

    public Car(){
        System.out.println("无参构造方法");
        name=null;
        color=null;
        price=0;
    }
    public Car(String n,String m,int p){
        System.out.println("有参构造方法");
        name=n;
        color=m;
        price = 300000;
    }//这俩方法就是方法的重载

对象与引用

  • Java语言中除了基本数据类型以外都属于引用类型
  • Java中的对象是通过引用对其操作的
class Car{
	String name;
	String color;
	int price;
}
Car bm = new Car();
  • 右边的“new Car()”,是以Car类为模板,在堆空间里创建一个Car类对象
  • 左边的“Car bm”创建了一个Car类型引用变量。所谓Car类的引用,就是以后可以用来指向Car对象的对象引用
  • "="操作符使对象引用指向刚创建的那个Car对象(即把对象存储的地址赋值给了bm)
我们可以把这句拆开两部分理解
Car bm;
bm = new Car;
这样写,就比较清楚了,有两个实体;一个是对象引用变量,一个是对象本身
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

刺猬崔‍️

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

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

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

打赏作者

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

抵扣说明:

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

余额充值