手把手带你粗略了解Java--类和对象

目录
  • 认识类和对象
    • 1.类、对象是什么?
    • 2.什么是面向对象?
    • 3.一个对象的产生过程是?
    • 🔺OOP语言的三大特征?
  • 类和对象的实例化
    • 类的定义:
      • 注意:
    • 实例化对象:
      • ①如何访问对象中的实例成员变量?
      • ②如何访问静态的数据成员?
      • 注意:
    • 方法:
      • 实例成员方法:
      • 静态成员方法
    • 🔺构造方法
    • ①访问实例成员方法
    • ②访问静态成员方法
  • static 关键字
    • 1.修饰属性:
      • 静态成员变量只有一份:
    • 2.修饰方法:
  • this 关键字
    • this 使用方法:
    • 举例1
    • 举例2
  • getter 和 setter方法
    • 注意事项:
  • 封装
    • 封装的实现步骤:
    • 举例:
    • 输出结果:
    • Java中的访问修饰符:
    • 封装的作用:
  • 代码块
    • 实例代码块:
      • 注意事项:
    • 静态代码块:
      • 注意事项:
  • 静态 / 实例代码块异同点
  • 总结

认识类和对象

1.类、对象是什么?

类在Java中,也叫做自定义类型。

类就是一类对象的统称,对象就是这一类具体化的一个个例

可以把类想象成一个模板,把对象想象成实体,比如:建房子,会有图纸,然后根据图纸去建房子,一张图纸可建很多同样的房子。而图纸就是"类",建的房子就是"实体",通过一个类可以产生多个对象

2.什么是面向对象?

之前在初始Java篇简单讲述了Java的面向对象性,对比了面向对象和面向过程的不同

这里就不多说了 :https://blog.csdn.net/m0_47988201/article/details/118996045?spm=1001.2014.3001.5501.

面向对象是思考问题的一种方式,是一种思想

总的来说,面向对象就是用代码(类),来描述客观世界事物的一种方式,一个类主要包含一个事物的属性和行为

面向对象的好处是:将复杂的事情简单化,只要面对一个对象就行

之后,会从这三点进行深入学习:找对象—创对象—使用对象

3.一个对象的产生过程是?

①给对象分配内存;

②调用合适的构造方法

🔺OOP语言的三大特征?

OOP:面向对象编程

三大特性:继承、封装、多态

类和对象的实例化

类的定义:

在Java中定义类,需要 class 关键字

类中包含的内容称为类的成员;属性主要是用来描述类的,称之为类的成员属性或者类成员变量;方法主要说明类具有哪些功能,称为类的成员方法

类的成员包括:字段、方法、代码块、内部类和接口等,此处只介绍前三个

语法格式:

class ClassName {
field ; …// 字段(成员属性) / 成员变量
method;// 行为 / 成员方法
}

举例:

class Person{
    //字段
	String name;
	int age;
    //行为
    public void eat(){
        System.out.println("eat()!");
    }
    public void sleep(){
        System.out.println("sleep()!");
    }
}

注意:

  • 类名使用大驼峰命名法
  • 字段 / 成员变量定义在方法外面、类的里面
  • 实例成员变量存放在对象里
  • Java中访问修饰限定符:
  • private:私有的;public:共有的;protected:受保护的;什么都不写:默认权限 / 包访问权限
  • 一般一个文件当中只定义一个类
  • main方法所在的类必须要使用public修饰p
  • ublic修饰的类必须要和文件名相同

实例化对象:

在Java中,通过关键字new,配合类名可以实例化一个对象

用类类型创建对象的过程,称为类的实例化

//实例化对象
Person person1 = new Person();
Person person2 = new Person();
Person person3 = new Person();
Person person4 = new Person();

①如何访问对象中的实例成员变量?

通过对象的引用即可访问: 对象的引用 . 成员变量

public static void main(String[] args) {
	//实例化一个对象
	Person person = new Person();
	//访问对象中的实例成员变量
	//通过对象的引用
	System.out.println(person.age);
	System.out.println(person.name);
}

②如何访问静态的数据成员?

类名 . 静态成员变量

public static void main(String[] args) {
	Person per = new Person();
	System.out.println(Person.size);
}

注意:

  • 同一个类可以创建多个实例
  • new关键字用于创建一个对象的实例实例
  • 成员变量,没有初始化,默认值为对应的 0 值
  • 引用类型默认为null,简单类型默认为 0
  • 特殊:char类型—"\u0000";boolean类型—false
  • 使用 . 来访问对象中的属性和方法
  • 静态成员变量不属于对象,属于类,且只有一份

方法:

实例成员方法:

public void eat(){
    System.out.println("eat()!");
}
public void sleep(){
    System.out.println("sleep()!");
}

静态成员方法

静态成员方法
public static func(){
	System.out.println("static::func()!");
}

🔺构造方法

构造方法的方法名和类名相同,且没有返回值

构造方法作用: 实例化一个对象

class Person{
    private String name;
    private int age;
    public  Person(){
        System.out.println("Person!");
    }
	public Person(String name,int age){
        this.name = name;
        this.age = age;
        System.out.println("Person<String,int>");
    }
public class Test {
    public static void main(String[] args) {
        //写这行代码的时候,就会调用构造方法
        Person person1 = new Person();
        Person person2 = new Person("Huahua",18);
	 }
}

注意:

  • 当没有提供构造方法的时候,编译器会自动提供一个没有参数的构造方法
  • 若类中定义了构造方法,则默认的无参构造不再产生
  • 什么时候调用构造方法取决于new对象时是否给参数
  • 构造方法支持重载,规则和普通方法一致

①访问实例成员方法

通过对象的引用进行访问:对象的引用 . 实例成员方法

public static void main(String[] args) {
	Person per = new Person();
	per.eat();
	per.sleep();
}

②访问静态成员方法

类名 . 静态成员方法

public static void main(String[] args) {
	Person.func();
}

static 关键字

1.修饰属性:

Java静态属性和类相似,和具体的实例无关

即:同一个类的不同实例共用同一个静态属性

class Test{
    public int a = 0;
    public static int count;
}

静态成员变量只有一份:

public static void main(String[] args) {
    Test T = new Test();
    T.a++;
    Test.count++;
    System.out.println(T.a+" "+Test.count);
}

输出结果:

分析原因:

2.修饰方法:

在方法前应用 ststic 关键字,就把该方法称为静态方法

静态成员方法
public static func(){
	System.out.println("static::func()!");
}

注意:

  • 静态方法内部不能访问非静态成员
  • 静态方法属于类,不属于类的对象
  • 可以直接调用静态方法,而无需创建类的实例
  • 静态方法可以更改静态数据成员的值
  • 静态方法中不能调用任何非静态方法

this 关键字

this 表示当前对象的引用

this 使用方法:

1、this . 属性名称 访问属性,指的是访问类中的成员变量,用来区分成员变量和局部变量

2、this . 方法名称 用来访问本类的成员方法

3、this();访问本类的构造方法,()中可以有参数的 如果有参数 就是调用指定的有参构造

举例1

访问属性 和 访问方法

class  Person{
    private String name;
    private int age;
    //调用属性
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    //调用方法
    public void eat{
    	System.out.println(this.getName());
    }
    public String getName{
    	return name;
    }
}

举例2

访问构造方法

class Person{
    private String name;
    private int age;
    public  Person(){
    	// 访问构造方法
        this("Huahua",3);
        System.out.println("Person!");
    }
    public Person(String name,int age){
        this.name = name;
        this.age = age;
        System.out.println("Person<String,int>");
    }
}

注意事项:

  • this() 不能使用在普通方法中 只能写在构造方法中
  • this() 必须是构造方法中的第一条语句

getter 和 setter方法

当我们使用 private 来修饰字段的时候,就无法直接使用这个字段了,这就需要使用 getter 和 setter 方法

class Person{
    private String name;
    //setter方法给设施变量的值
    public String getName{
       	return name;
    }
    public void setName(String name){
        this.name = name;
    }
}

注意事项:

  • getName 即为 getter 方法,表示获取这个成员的值
  • setName 即为 setter 方法,表示设置这个成员的值
  • 不是所有的字段都一定要提供 setter / getter 方法,而是要根据实际情况决定提供哪种方法
  • 当 setter 方法的形参名字和类中的成员属性的名字一样时,如果不适用 this,相当于自赋值,this表示当前实例的引用
  • 在IDEA中,可以使用Alt+F12,快速生成 setter / getter 方法

封装

封装:用 private 来修饰属性 / 方法

类和对象阶段,主要研究的就是封装特性

class Student{
    private String name;
    public int age;
    public void func1(){
        System.out.println("func1()");
    }
}

如果一个属性 / 方法被 private 修饰之后,限定只能在类当中来使用

封装的实现步骤:

1、修改属性的可见性——设为private

2、创建getter / setter方法——用于属性的读写

3、在getter / setter方法中加入属性控制语句——对属性值的合法性进行判断

举例:

class Student{
    //成员变量私有化
    private int age;
    //setter方法给设施变量的值
    public void setAge(int age){
        if(age < 0){
            System.out.println("年龄无效!");
        }
        else{
            this.age = age;
        }
    }
    //提供一个公开的接口
    //使用getter方法获取赋值
    public int getAge(){
        return age;
    }
}
public class Test {
    public static void main(String[] args) {
        Student student = new Student();
        //检验
        student.setAge(-10);
        System.out.println(student.getAge());
    }
}

输出结果:

Java中的访问修饰符:

访问修饰符 本类 同包 子类 其他
private
public
protected
默认

封装的作用:

  • 对象的数据封装特性,提高了程序的可复用性和可维护性,降低了程序员保持数据与操作内容的负担
  • 对象的数据封装特性还可以把对象的私有数据和公共数据分离开,保护了私有数据,减少了可能的模块间干扰,达到降低程序复杂性、提高可控性的目的

建议:以后在设计类的时候,无特殊要求,所有的属性虽好都设置为私有的private ,一定要体现封装

代码块

使用 { } 定义的一段代码称为代码块

重点掌握代码块执行的先后顺序

分为四种:

普通代码块:在方法或语句中出现的{ }就称为普通代码块
实例代码块 (构造代码块)
静态代码块
同步代码块

实例代码块:

定义在类中且没有加static关键字的代码块

如果存在多个构造代码块,执行顺序由他们在代码中出现的次序决定,先出现先执行

特性:

{
 System.out.println("实例代码块......");
}

注意事项:

  • 实例代码块优先于构造方法执行,因为编译完成后,编译器会将实例代码块中的代码拷贝到每个构造方法第一条语句前
  • 实例代码块只有在创建对象时才会执行

静态代码块:

static {
 System.out.println("静态代码块......");
}

注意事项:

  • 静态代码块不能存在于任何方法体内
  • 静态代码块不能直接访问实例变量和实例方法,需要通过类的实例对象来访问
  • 静态代码块不管生成多少个对象,其只会执行一次
  • 静态成员变量是类的属性,因此是在JVM加载类时开辟空间并初始化的
  • 如果一个类中包含多个静态代码块,在编译代码时,编译器会按照定义的先后次序依次合并,最终放在生成的<>方法中,该方法在类加载时调用,并且只调用一次

静态 / 实例代码块异同点

相同点: 都是JVM加载类后且在构造函数执行之前执行,在类中可定义多个,一般在代码块中对一些static变量进行赋值

不同点: 静态代码块在非静态代码块之前执行,静态代码块只在第一次 new 时执行一次,之后不在执行。而非静态代码块每new一次就执行一次

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能给多多关注我们的更多内容!

(0)

相关推荐

  • 一篇文章带你深入了解Java对象与Java类

    目录 1.面向对象是什么? 2.Java类 1.什么是类 2.Java类 类的结构 Java类的格式 3.java对象 4.类和对象 5.类中的变量,方法 1.变量分类 成员变量: 局部变量: 2.方法分类 6.方法重载 7.对象与引用 基本类型和引用类型的区别: 值传递与引用传递 8.static关键字 概念 static属性 static方法 代码块 9.类的加载执行 10.包 包的概念: 包的作用: 包(package)的命名规范: 访问权限修饰符 11.面向对象语言的三大特征 1.封装

  • java对象转化成String类型的四种方法小结

    目录 方法1:采用 Object#toString()方法 方法2:采用类型转换(String)object方法 方法3:采用 String.valueOf(Object) 方法 方法4:采用 ""+object方法 在java项目的实际开发和应用中,常常需要用到将对象转为String这一基本功能.本文将对常用的转换方法进行一个总结.常用的方法有Object#toString(),(String)要转换的对象,String.valueOf(Object)等. 方法1:采用 Object

  • Java面向对象之内部类案例讲解

    1. 内部类 很多时候我们创建类的对象的时候并不需要使用很多次,每次只使用一次,这个时候我们就可以使用内部类了 1.1 内部类概述 内部类就是在一个类的内部在定义一个类,比如,A类中定义一个B类,那么B类相对A类来说就称为内部类,而A类相对B类来说就是外部类了. 内部类不是在一个java源文件中编写俩个平行的俩个类,而是在一个类的内部再定义另外一个类. 我可以把外边的类称为外部类,在其内部编写的类称为内部类. 内部类分为四种: 成员内部类 静态内部类 局部内部类 匿名内部类 1.2 成员内部类(

  • Java实现普通类注入service对象

    普通类注入service对象 找了很多办法,无论是加@Component还是编写工具类实现ApplicationContextAware,始终为null. 最后使用这两行代码解决: WebApplicationContext context = ContextLoader.getCurrentWebApplicationContext(); DailySurveyService service = (DailySurveyService) context.getBean("dailySurvey

  • 带你入门Java的类与对象

    目录 类和对象 类的属性 成员方法 形参和实参 局部变量 可变参数 构造方法 this关键字 this.属性名 this.方法名 static关键字 静态变量 1)静态变量 2)实例变量 静态方法 静态代码块 对象的创建 显式创建对象 方法隐含创建对象 总结 匿名对象 总结 类和对象 在面向对象中,类和对象是最基本.最重要的组成单元.类实际上是表示一个客观世界某类群体的一些基本特征抽象.对象就是表示一个个具体的东西.所以说类是对象的抽象,对象是类的具体. "人类"只是一个抽象的概念,它

  • java类和对象原理与用法分析

    本文实例讲述了java类和对象原理与用法.分享给大家供大家参考,具体如下: 面向对象编程OOP 类:相似对象的集合. 对象 对象:实体.一切可以被描述的事物. 属性:特征. 方法:动作,行为. 类和对象的区别 [1]类时抽象的,对象是具体的. [2]类是一个模板,创建出来的对象具备共同的属性和方法. [3]类是一种数据烈性.引用数据类型. 语法 public classs 类名{ //定义属性部分 属性1的类型 属性1: 属性2的类型 属性2: ... 属性3的类型 属性n; //定义方法部分

  • 带你快速了解Java中类和对象的关系

    本文重点解读Java里的类和对象的关系 1.首先介绍两个概念 类:类是对现实生活中一类具有共同属性和行为事务的抽象,确定对象将会拥有的属性和行为. 对象:对象是类的一个实例(对象不是找个女朋友),有状态和行为.例如,一条狗是一个对象,它的状态有:颜色.名字.品种:行为有:摇尾巴.叫.吃等. 概念比较抽象,我们来讲一个具体的项目开发场景,来理解类和对象.假如,我们现在要开发一套图书管理系统,我们如何在程序里面表示出一本书呢?这个时候就用到了类的概念,我们可以定义一个表示书的数据类型,这个新的数据类

  • Java 类与对象重难点详解

    目录 什么是类.对象? 类和类的实例化 字段的初始化 类当中实现方法 static 静态关键字 封装 private 实现封装 setter 和 getter 方法 构造方法 this 关键字 匿名对象 什么是类.对象? 因为计算机并不能像我们人这样去理解世界上的东西,所以为了更好的编辑,就抽象出了类和对象.类就是把功能放在一起,然后由一个人去调用这个功能,然后再编辑对应的功能.调用者就是对象的实现者 类和类的实例化 类是一类对象的统称,对象就是这一类具体化的实例 创建类的关键字:class 举

  • Java 类与对象超基础讲解

    目录 什么是面向对象 面向过程与面向对象 类与对象的使用 类与对象的使用与说明 对象的初始化 this的使用 构造方法 this可以调用本类的构造方法 什么是面向对象 Java语言是一个纯面向对象的语言,面向对象的语言不仅只有Java,包括C++,PHP等 面向对象的编程思想简称 OOP(Object Oriented Programming),其基本特点就是封装,继承和多态. 面向过程与面向对象 想要弄清楚什么是面向对象,首先需要知道两者的区别 面向过程更注重程序的每一个步骤,用相应的函数来实

  • 全面理解Java类和对象

    面向对象的程序是由对象组成的,每个对象包含对用户公开的特定功能部分和隐藏的实现部分.在面向对象程序设计(OOP)中,不必关心对象的具体实现.在传统的结构化程序设计中,算法是第一位的,数据结构是第二位的,即首先确定如何操作数,再考虑如何组织数据,以方便操作.而OOP则颠倒了这种次序,将数据放在第一位,然后再考虑操作数据的算法. 一.类 类是构造对象的模板和蓝图.通俗地说,类相当于建筑的图纸,而对象相当于建筑物.由类构造对象的过程称为创建对象的实例. Java中通过关键字class定义"类"

  • Java 类与对象详细

    目录 1.类 2.对象 3.练习 4.练习答案 前言: 早期的Java语言,是面对过程的语言(面向过程指把一个场景分割成一个个的步骤研究),如今的Java已经是面对对象的语言(面向对象指把一个场景分割成一个个的对象研究).面向对象是相比面向过程有很多便利的地方,以后读者会慢慢感受到~ 那么,何谓对象呢?小编正在使用的电脑是一个对象,读者手中的手机是一个对象--对象,指[一个][具体的]物品或者事物(注意对象可以是抽象的东西). 每个对象都有其特征和用途,不同类型的对象特征和用途有所不同.我们把具

  • 深入浅出分析Java 类和对象

    目录 一.什么是类 二.Java的类和C语言的结构体异同 三.类和类的实例化 类的声明 实例化的对象,成员遵循默认值规则 类的实例化 静态属性(静态成员变量) 四.构造方法 创建构造方法 this 一.什么是类 类(Class)是面向对象程序设计(OOP,Object-Oriented Programming)实现信息封装的基础.类是一种用户自定义的引用数据类型,也称类类型.每个类包含数据说明和一组操作数据或传递消息的函数,类的实例称为对象 类的实质是一种引用数据类型,类似于 byte,shor

  • 浅谈java类和对象

    目录 一.面向对象的描述 二.类和对象的基本概念 三.类定义和使用 1.简单认识类 2.类的定义 3.实例化对象 4.类的三大特性 封装 继承 多态 一.面向对象的描述 面向对象是一种现在最为流行的程序设计方法,几乎现在的所有应用都以面向对象为主了,最早的面向对象的概念实际上是由IBM提出的,在70年代的Smaltalk语言之中进行了应用,后来根据面向对象的设计思路,才形成C++,而由C++产生了Java这门面向对象的编程语言. 但是在面向对象设计之前,广泛采用的是面向过程,面向过程只是针对于自

  • Java类和对象的设计原理

    目录 一.实验目的 二.实验代码 1.定义一个类MyProgram,包含两个属性: 2. 在Vehicle类的基础上创建一个Tractor(拖拉机)类 3. 组合实现汽车类 5. USB接口程序设计 6.this关键字主要有三个应用: 7.请简述static关键字的作用 8.请简述super关键字的作用 9.请简述final关键字的作用 一.实验目的 1. 掌握面向对象的编程思想.类与对象: 2. 掌握类的封装性.继承性和多态性的作用: 3. 掌握成员变量和成员方法的特性.构造方法.toStri

  • 手把手带你粗略了解Java--类和对象

    目录 认识类和对象 1.类.对象是什么? 2.什么是面向对象? 3.一个对象的产生过程是?

随机推荐