类和对象(初识java)

本文介绍了Java中的面向对象编程概念,包括类和对象的关系、类的定义、构造方法、封装、访问权限符、包的使用以及静态成员和代码块。通过实例演示了如何创建类、对象以及理解面向对象的核心特性。
摘要由CSDN通过智能技术生成

目录

​编辑

1.面向对象的初步认识

1.1什么是面向对象

1.2 面向对象和面向过程

面对过程

面向对象

2.类和对象

2.1类的定义

2.2定义类和方法的注意事项:

2.3对象

​编辑

2.4构造方法(构造器)

特性:

 2.5this的使用

什么是this引用?

​编辑3.1封装

3.1什么是封装?

4.包

4.1包的含义

4.2如何导入包中的类

4.3自定包

4.4常见的包

5.static成员和方法

5.1static成员

5.2static方法

6.代码块

6.1什么是代码块

6.2四种代码块 

代码块的执行顺序


1.面向对象的初步认识

1.1什么是面向对象

java是一门纯面向对象的语言面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情

1.2 面向对象和面向过程

面对过程

就好比你去奶茶店买奶茶,店员根据你的要求下单去制作一杯你所要的奶茶,他需要经历制作奶茶的过程,这就叫做面向过程。

面向对象

你去奶茶店,对象就是你,店员,奶茶

至于制作奶茶的过程并不用你去。这就叫做面向对象。

2.类和对象

2.1类的定义

类是对一个实体(对象)进行描述,主要去描述该实体(对象)具体有哪些特征,哪些功能

例如:空调,他是一个品牌,在java中可以将其看成一个类别。

属性:品牌,型号,重量,大小尺寸等

功能:制冷,制热,定时等

对于这些属性和功能的定义,在java中需要用到class关键字

类的定义

对于类的定义:

class  类名 {}

{}内是类的属性和方法,

属性:用来描述类的,又称为成员变量/成员属性

方法:主要用来说明类有哪些功能,叫做成员方法

(定义一个类,就相当于在计算机中定义了一个新的类型)

class Conditioner{
    public String  make;//品牌
    public String model;//型号
    public String color;//颜色
    public int weigh;//重量
    public int high;//高

    public void  mature(){
        System.out.println("制热功能");
    }
    public void  cool(){
        System.out.println("制冷功能");
    }
    public void time(){
        System.out.println("定时");
    }
}

2.2定义类和方法的注意事项:

1.类名采用大驼峰定义,方法名采用小驼峰定义

2.成员前写法统一为public,后续讲解几个访问权限符再细讲

除外

1.在定义类时,一个文件只放一个类,方便后续维护

2.main方法所在的类一般要用public修饰

3.public修饰的类必须和文件名相同

2.3对象

描述完类,那我们就要来使用类,如何使用?

我们需要用到new关键字,来为我们创建一个对象

格式: 类名  对象名= new  类名();

注意:1.new关键字用于创建一个对象

          2.可以使用(.)点来引用类中的属性和方法

          3.一个类可以实例化多个对象

class Conditioner{
    public String  make;//品牌
    public String model;//型号
    public String color;//颜色
    public int weigh;//重量
    public int high;//高

    public void  mature(){
        System.out.println("制热功能");
    }
    public void  cool(){
        System.out.println("制冷功能");
    }
    public void time(){
        System.out.println("定时");
    }
    public void show(){
        System.out.println("品牌:"+make+"\n型号:"+model+"\n颜色:"+color+"\n重量:"+weigh+"\n高:"+high);
    }

    public static void main(String[] args) {
        Conditioner c=new Conditioner();
        c.make="meidi";
        c.model="s250";
        c.color="yellow";
        c.weigh=100;
        c.high=1;
        c.show();
        c.cool();
    }

}

结果:

new的对象,是在栈区还是堆区存放?

当我们new完一个对象后,会在栈区分配一块空间用来存储对象的地址,在堆区分配一块空间存储对象,用来存放对象中的属性,在图中我们可以看到并没有存储方法(方法是在你调用后,才会向内存申请空间)

2.4构造方法(构造器)

构造方法(构造器)是一个特殊的成员方法,名字必须和类名相同,在创建对象时,由编译器自动调用,并且整个对象的生命周期中只调用一次

构造方法在什么时候调用呢

特性:

1.名字与类名相同

2.没有返回值类型,void也不行

3.创建对象时自动调用,并且在对象的生命周期中只调用一次

4.构造方法可以重载

5.当我们没有定义构造方法时,编译器会给我们提供一个不带参数的构造方法

但是,如果我们自己定义了构造方法,编译器不再会提供不带参数的构造方法

例如:

这里我们自己创建了三个构造方法 ,当然,我们可以根据我们想要的进行创建构造方法

我们来调用一下,如图

 2.5this的使用

在对象中的代码中,如果我们一直c.,c.太麻烦了,我们可以在类中定义一个方法,通过调用方法进行赋值。在下面中,我们定义一个方法来进行赋值。

但是这样写,如果我们在无意之间把参数名和成员名共用呢。这时,会发现打印的全是null和0 ,为什么会这样?对于成员变量和局部变量,会遵循局部优先,这时就是局部变量给局部变量赋值。并没有对成员变量造成影响,所以就会打印null和0

 但如果我们在前面加this呢?

 这是我们空调看到成员变量确实发生了改变。

什么是this引用?

this引用指向当前对象(成员方法运行时调用该成员方法的对象),在成员方法中所有成员变量的操作,都是通过this去进行访问的,只是所以的操作都是透明的,我们不需要去传递,编译器自动完成

注意:this引用之间不能形成环

        且this必须位于方法的第一行

3.1封装

面向对象程序有三大特性:封装、继承、多态

3.1什么是封装?

将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互。(简单来讲就是套壳屏蔽细节)

例如:你在使用电脑的时候,你不需要关注内部的核心部件,比如CPU是如何设计的,你只需要知道如何开机,关机,使用电脑即可。

3.2访问权限符

java中主要是通过类和访问权限来实现封装:

类:可以将数据以及封装数据的方法结合在一起。

访问权限:用来控制方法或者字段能否直接在类外使用。

Java提供了四种访问权限符:

这些访问操作符的范围怎么理解呢?

public:可以比作一个人的外貌,谁都看得见。

default:可以认为是你的事情在家里(同一个包)不是秘密,但对于其他人来说就是隐私。

private:就只有自己知道,其他人都不 知道

先来讲public

我们在创建类时,只能用public或者不用访问权限符修饰,默认包访问权限。

4.包

4.1包的含义

为了更好的管理类,我们把多个类收集在一起成为一组,称为软件包。

类似于目录。有了包,方便我们更好地对类进行管理,在每个java文件最好只写一个类,方便查看。当然,一个java文件下也可以有多个类。

例如,为了更好的管理电脑中的歌曲,一种好的方式就是将相同属性的歌曲放在相同文件下,也可以对某个文件夹下的音乐进行更详细的分类。 

包是对类、接口等封装机制的体现,是一种对类或接口等的很好的组织方式。

作用:在同一个工程中允许存在相同名称的类,只要处在不同包即可

4.2如何导入包中的类

法一:java.包名.包中的类;

java中给我们提供了很多现成的类供我们使用,例如使用Date类:可以使用java.util.Date来来导入java.util这个包中的Date类。

public class testmain1 {
    public static void main(String[] args) {
        java.util.Date date = new java.util.Date();
        //可以一个毫秒级别的时间戳
        System.out.println(date.getTime());
    }
}

但是如果我们每次都写java.util,会很麻烦,我们可以使用import语句进行导包。                                               

如果还想使用包中的其他类,我们可以使用import java.util.*;                                                                                                                                                                                                                                                                        当然,这两种,推荐使用第一种,在导入包的时候指定导入的类名,以防出现冲突。例如:   这种情况是因为在两个包中,都有Date类,编译器不知道你要使用的是哪个就会报错。所以最好使用第一种。

我们可以使用import static 导入包中静态的方法和字段。

4.3自定包

基本规则:

1.在文件的最上方加上一个package语句指定代码是在哪个包中。

2.包名需要尽量指定成唯一的名字,通常会用公司的域名的颠倒形式(如com.bai.demo2).

3.包名要和代码路径相匹配,例如:创建com.bai.demo2的包,那么会存在一个对应的路径com/bai/demo2来存储代码.

4.如果一个类没有package语句,则该类被放到默认包(src)中。

4.3.1包的创建操作步骤:

在IDEA中新建一个包:

2.在弹框中输入包名

3.回车后,包就创建好了,在包中创建一个java文件。

同时,我们也可以看到在test最上方出现了package语句

4.4常见的包

1. java.lang:系统常用基础类(String、Object),此包从JDK1.1后自动导入。

2. java.lang.reflect:java 反射编程包;

3. java.net:进行网络编程开发包。

4. java.sql:进行数据库开发的支持包。

5. java.util:是java提供的工具程序包。(集合类等) 非常重要

6. java.io:I/O编程开发包。

5.static成员和方法

5.1static成员

在java中,被static修饰的成员,称为静态成员,也叫做类成员,不属于某个具体的对象,是属于所有对象共享的。

特性:不属于某个具体对象,是类的属性,所以对象共享,不存在某个对象的空间中

2.既可以通过对象访问,也可以通过类名访问,但一般推荐使用类名

3.类变量存储在方法区

4.生命周期伴随着类的一生(随着类的加载而创建,随着类的卸载而销毁)

5.2static方法

在java中,被static修饰的从成员方法称为静态成员方法,是类的方法,不是某个对象特有的,静态成员一般是通过 静态方法来访问的。

注意:1.不能在静态方法中访问任何非静态成员变量

           2.静态方法中不能调用任何非静态方法,因为非静态方法有this参数,在静态方法中调用时候无法传递this引用

           3.静态方法不可以重写,不能用来实现多态

6.代码块

6.1什么是代码块

使用{}定义的一段代码称为代码块,根据代码块定义的位置以及关键字,又可以分为四种:

1.普通代码块 ;2.构造块;3.静态块;4.同步代码块

6.2四种代码块 

1.普通代码块:定义在类中的代码块(不加修饰符)。也叫实例代码块,一般用于初始化实例化成员变量

2.构造块:定义在类中的代码块(不加修饰符)。也叫:实例代码块。构造代码块一般用于初始化实例成员变量。

3.静态代码块:使用static定义的代码块称为静态代码块。一般用于初始化静态成员变量。

注意:静态代码块只执行一次,无论有多少个对象

          静态成员变量是类的属性,因此是在JVM加载类时开辟空间并初始化的

          如果一个类中包含多个静态代码块,在编译代码时,编译器会按照定义的先后次序依次执行(合并)

          实例代码块只有在创建对象时才会执行

代码块的执行顺序

  1. 静态代码块
  2. 实例代码块
  3. 对应构造方法
  4. 同种类型,按照定义顺序来
  5. 注意:如果存在父类,那么先执行父类的静态代码块,再执行子类的静态代码块,再执行父类的实力代码块,构造块,最后执行子类的实例代码块,构造代码块(属于继承的内容)

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小猪同学hy

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

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

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

打赏作者

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

抵扣说明:

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

余额充值