java中类和对象的详细介绍

面向过程和面向对象

  • C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。
  • JAVA是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。
  • 面向过程注重的是过程,在整个过程中所涉及的行为,就是功能。
  • 面向对象注重的是对象,也就是参与过程所涉及到的主体。是通过逻辑将一个个功能实现连接起来

【面向对象概念】

  1. 面向对象是思考问题的一种思考方式,是一种思想。比如:概念与实例。理论与实践。名和实等等。
  2. 类就是一类对象的统称。对象就是这一类具体化的一个实例
  3. 面向对象的好处:将复杂的事情变简单了,只要面对一个对象就行。

【面向对象设计】

面向对象设计把握一个重要的经验:谁拥有数据,谁对外提供操作这些数据(私有)的方法!(被动的一方是数据的拥有者,主动的一方是执行者)

开发时:找对象,建对象,用对象,并维护对象之间的关系。

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

类和类的实例化

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

一个类可以实例化无数个对象

下面我们通过一个例子了解类和类的实例化

class Person {
 public int age;//成员属性 实例变量 字段 属性
 public String name;
 public static String sex; //静态成员变量 方法区
 public void eat() {//成员方法
 System.out.println("吃饭!");
 }
 public void sleep() {
 System.out.println("睡觉!");
 }
 public static void func(){
 	System.out.println("静态成员方法");
 }
}
public class Main{
 public static void main(String[] args) {
 Person person = new Person();//通过new实例化对象
 person.eat();//成员方法调用需要通过对象的引用调用
 person.sleep();
//产生对象 实例化对象
 Person person2 = new Person();
 Person person3 = new Person();

		//静态成员变量和方法的调用
		System.out.println(Person.sex);
		Person.func();
 }
}

成员变量:

定义在类的内部,方法的外部

通过对象的引用来访问

如果没有初始化,那么它的值就是一个默认默认值(默认零值)

  • 如果是引用类型,那么值就是null(包括数组,String字符串等)
  • 如果是简单类型,那么值就是其这种类型所对应的默认值
byte short int long float double char boolean
0 0 0 0L 0.0f 0.0 '\u0000'十六进制(也可以当作0) false

行为/方法:

【eat() sleep()】为实例成员方法

func()为静态成员方法

对于静态的成员变量和成员方法该该怎么访问呢

这里可以看到,对于静态的,不需要实例化对象!!!

直接调用

类名.静态成员变量/静态成员方法

总结static:

  • 对于静态的成员属性或者静态的成员方法,是不依赖于对象的。
  • 静态的成员变量 ,只有一份,存储在方法区中。
  • 静态的方法内部是不可以访问非静态的数据的。

实例化类的存储结构

初始化成员变量的方式

1、就地初始化(在类内进攻初始化)

2、默认初始化

3、类外初始化(用的比较多)

public class Main{
 public static void main(String[] args) {
 Person person1 = new Person();
 person1.name = "星星";
 person1.age = 20;

 Person person2 = new Person();
 person2.name = "狒狒";
 person2.age = 40;
 }
}

封装

在我们写代码的时候经常会涉及两种角色: 类的实现者和类的调用者. 封装的本质就是让类的调用者不必太多的了解类的实现者是如何实现类的,只要知道如何使用类就行了.

这样就降低了类使用者的学习和使用成本, 从而降低了复杂程度

private/ public 这两个关键字表示 “访问权限控制” .

  • 被 public 修饰的成员变量或者成员方法, 可以直接被类的调用者使用.
  • 被 private 修饰的成员变量或者成员方法,不能被类的调用者使用

举个例子

class Person {
 private String name = "张三";
 private int age = 18;
 public void show() {
  System.out.println("我叫" + name + ", 今年" + age + "岁");
 }
}
class Test {
 public static void main(String[] args) {
  Person person = new Person();
  person.show();
 }
}
  • 此时字段已经使用 private 来修饰. 类的调用者(main方法中)不能直接使用. 而需要借助 show 方法. 此时类的使用者就不必了解 Person 类的实现细节.
  • 同时如果类的实现者修改了字段的名字, 类的调用者不需要做出任何修改(类的调用者根本访问不到 name, age这样的字段)

getter和setter方法

getter:得到属性值的方法

setter:修改属性值的方法

我们用这两者方法将类的属性封装起来,从而来达到访问属性的目的

class Person {
 private String name;//实例成员变量
 private int age;
 public void setName(String name){
//name = name;//不能这样写
  this.name = name;//this引用,表示调用该方法的对象
 }
 public String getName(){
  return name;
 }
 public void show(){
  System.out.println("name: "+name+" age: "+age);
 }
}
class Main {
 public static void main(String[] args) {
  Person person = new Person();
  person.setName("caocao");
  String name = person.getName();
  System.out.println(name);
  person.show();
 }
}

this关键字

我们在刚才的代码可以看到setter方法

private String name;
public void setName(String name){
		//name = name;//不能这样写
  this.name = name;//this引用,表示调用该方法的对象
}

this表示当前对象引用, 可以借助 this 来访问对象的字段和方法

三个用法:

  • this.属性; //访问当前对象的属性
  • this.方法;//调用当前对象的方法
  • this(); //调用当前对象的构造方法 (ps:必须放在第一行,且只能存在一个构造方法内部)

构造方法

构造方法是一种特殊方法, 使用关键字new实例化新对象时会被自动调用, 用于完成初始化操作

实例化一个对象/创建一个对象分几步

Student stu = new Student() ;//实例化一个对象

两步

  1. 为对象分配内存
  2. 调用合适的构造方法,说明构造方法不止一个,可能更多

语法规则

  1. 方法名称必须与类名称相同
  2. 构造方法没有返回值类型声明
  3. 每一个类中一定至少存在一个构造方法(没有明确定义,则系统自动生成一个无参构造)
class Person {
 private String name;//实例成员变量
 private int age;
 private String sex;
 //默认构造函数 构造对象
 public Person() {
  this.name = "caocao";
  this.age = 10;
  this.sex = "男";
 }
 //带有3个参数的构造函数
 public Person(String name,int age,String sex) {
  this.name = name;
  this.age = age;
  this.sex = sex;
 }
 public void show(){
  System.out.println("name: "+name+" age: "+age+" sex: "+sex);
 }
}
public class Main{
 public static void main(String[] args) {
  Person p1 = new Person();//调用不带参数的构造函数 如果程序没有提供会调用不带参数的构造函数
  p1.show();
  Person p2 = new Person("zhangfei",80,"男");//调用带有3个参数的构造函数
  p2.show();
 }
}

toString方法

  Person person = new Person("caocao",19);
  System.out.println(person);

如果打印引用,他会默认调用toString方法,执行这样一个结果:

我们可以重写toString方法,来打印自己想要的结果

例如:

class Person {
 private String name;
 private int age;
 public Person(String name,int age) {
  this.age = age;
  this.name = name;
 }
 public void show() {
  System.out.println("name:"+name+" " + "age:"+age);
 }
 //重写Object的toString方法
 @Override
 public String toString() {
  return "Person{" +
    "name='" + name + '\'' +
    ", age=" + age +
    '}';
 }
}

public class Main {
 public static void main(String[] args) {
  Person person = new Person("caocao",19);
  person.show();
  System.out.println(person);
 }
}

这样打印引用的化,就会按照想要的内容进行输出。

匿名对象

匿名只是表示没有名字的对象.

  • 没有引用的对象称为匿名对象.
  • 匿名对象只能在创建对象时使用.
  • 如果一个对象只是用一次, 后面不需要用了, 可以考虑使用匿名对象
new Person("caocao",19).show();//通过匿名对象调用方法

特点:不依赖于对象,我们只需要通过类名就可以调用其属性或者方法

代码块

  • 本地代码块
  • 静态代码块
  • 实例代码块/构造代码块
  • 同步代码块(多线程)

本地代码块: 在方法中的代码块

public class Main{
 public static void main(String[] args) {
  { //直接使用{}定义,普通方法块
   int x = 10 ;
   System.out.println("x1 = " +x);
  }
  int x = 100 ;
  System.out.println("x2 = " +x);
 }
}

静态代码块: 一般用于初始化静态成员属性

//静态代码块
static {
count = 10;//只能访问静态数据成员
System.out.println("I am static init()!");
}

实例代码块: 定义在类中的代码块,构造代码块一般用于初始化实例成员变量

//实例代码块
{
this.name = "bit";
this.age = 12;
this.sex = "man";
System.out.println("I am instance init()!");
}

执行顺序

静态代码块实例代码块构造方法

总结

到此这篇关于java中类和对象的文章就介绍到这了,更多相关java类和对象内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java面向对象基础,类,变量,方法

    一.面向对象的4个基本特征 抽象性.封装性.继承性和多态性. 抽象性分为过程抽象和数据抽象. 封装性 封装将数据以及加在这些数据上的操作组织在一起,成为有独立意义的构件.外部无法直接访问封装的数据,从而保证了这些数据的正确性. 如果外部需要访问类里面的数据,就必须通过接口.接口规定了可对一个特定的对象发出哪些请求. 继承性 继承是一种联结的层次模型,并允许和鼓励类的重用,它提供给了一种明确表述共性的方法.对象的一个新类可以从现有的类中派生,这个过程称为类继承.新类继承了原始类的特性,新类称为原始

  • 深入理解Java 对象和类

    Java作为一种面向对象语言.支持以下基本概念: •多态 •继承 •封装 •抽象 •类 •对象 •实例 •方法 •消息解析 本节我们重点研究对象和类的概念. •对象:对象是类的一个实例,有状态和行为.例如,一条狗是一个对象,它的状态有:颜色.名字.品种:行为有:摇尾巴.叫.吃等. •类:类是一个模板,它描述一类对象的行为和状态. Java中的对象 现在让我们深入了解什么是对象.看看周围真实的世界,会发现身边有很多对象,车,狗,人等等.所有这些对象都有自己的状态和行为. 拿一条狗来举例,它的状态有

  • 全面理解Java类和对象

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

  • Java中的对象、类、抽象类、接口、继承之间的联系

    正文: 举个例子:如果现在要想定义一个动物,那么动物肯定是一个公共的标准,而这个公共标准就可以通过接口来完成. 在动物中又分为两类:哺乳动物.卵生动物,而这个标准属于对动物的标准进一步细化,应该称为子标准,所以此种关系可以使用接口的继承来表示. 而哺乳动物可以继续划分为人.狗.猫等不同的类型,由于这些类型不表示具体的事物标准,所以可以使用抽象类进行表示. 如果要表示出工人或者学生这样的概念,则肯定是一个具体的定义,则使用类的方式. 然后每个学生或者每个工人都是具体的,那么就通过对象来表示: 由下

  • java中如何实现对类的对象进行排序

    我们需要对类按照类中的某一个属性(或者多个属性)来对类的对象进行排序,有两种方法可以实现,一种方法是类实现Comparable<T>接口,然后调用Collections.sort(List)方法进行排序,另一种方法是类不实现Comparable<T>接口,而在排序时使用Collections.sort(List, Comparator<T>)方法,并实现其中的Comparator<T>接口. 先创建一个简单的学生类: public class Student

  • 浅谈java中的对象、类、与方法的重载

    对象: 一切皆为对象. 对象包括两部分内容:属性(名词形容词),行为(动词). 对象和对象之间是有关系的: 派生,关联,依赖. 类: 对同一类别的众多对象的一种抽象. 类,还是用来生成对象的一种模板,对象是类的一种具体化的表现. 面向对象的三大特性:封装,继承,多态. class 类名{ 访问修饰符 成员变量的定义; 访问修饰符 成员函数(方法)的定义; } 访问修改符:默认不写,private,public. private,私有.只能被当前class 类名{}中的代码访问到.出了这个类的{}

  • 面向对象编程:Java中的抽象数据类型

    文章来源:互联网 作者:PaleSting/CSDN 在本文中,我们将考察Java中的数据类型,但是我们将介绍抽象数据类型(ADT)的概念.我们还将通过介绍Java Collections Framework(Java 集合架构)来学习Java定义的一些ADT. ADT 一个ADT是一个仅由保存的数据类型和可能在这个数据类型上进行的操作定义的.开发者们只能通过ADT的操作方法来访问ADT的属性,而且他们不会知道这个数据类型内部各种操作是如何实现的. 在Java中,我们常常使用一个接口来给出一个操

  • 浅析Java编程中类和对象的定义

    1,什么是类? 答:类是客观存在的,抽象的,概念的东西. 2,什么事对象? 答:对象是具体的,实际的,代表一个事物.例如:车是一个类,汽车,自行车就是他的对象. 关于类与对象的描述:类是对象的模版,对象是类的一个个体. 3,Java中定义类的方法? class 类名 用Java语法定义人类: public class Person { } 4,对象的定义方法? 1,对象声明:类名 对象名: 2,对象创建 对象名 =  new 类名(): new作用:分配内存空间. 也可以合写为:类名 对象名 =

  • java中类和对象的详细介绍

    面向过程和面向对象 C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题. JAVA是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成. 面向过程注重的是过程,在整个过程中所涉及的行为,就是功能. 面向对象注重的是对象,也就是参与过程所涉及到的主体.是通过逻辑将一个个功能实现连接起来 [面向对象概念] 面向对象是思考问题的一种思考方式,是一种思想.比如:概念与实例.理论与实践.名和实等等. 类就是一类对象的统称.对象就是这一类具体化的一个

  • Java中类与对象的相关知识点总结

    目录 一.面向过程与面向对象的理解 二.类与对象的理解与认识 三.类的成员 1.字段/属性/成员变量 2.对null的基本认识 3.方法 (method) 4.static 关键字 四.封装 1. private实现封装 2.getter和setter方法 五.构造方法 1.构造方法的基本语法及使用 2.this关键字 六.Java中的代码块 1.认识代码块 2.普通代码块 3.构造代码块 4.静态代码块 七.toString方法 1.重写println的toString方法 2.匿名对象 八.

  • Java与Http协议的详细介绍

    Java与Http协议的详细介绍 引言      http(超文本传输协议)是一个基于请求与响应模式的.无状态的.应用层的协议,常基于TCP的连接方式.HTTP协议的主要特点是:      1.支持客户/服务器模式.      2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径.由于HTTP协议简单,通信速度很快.      3.灵活:HTTP允许传输任意类型的数据对象.类型由Content-Type加以标记.      4.无连接:即每次连接只处理一个请求,处理完客户的请求,并收到客

  • java 值Document解析xml详细介绍

    java 值Document解析xml详细介绍 使用jar包:jdom.jar 配置文件格式 global.xml 一.获取输入的值组成的结点 我们将每个结点使用"." 拼接起来, 如结点i ,拼接为abc.def.i, 注意不包含root.解析每个结点的名字. /** * 获取对应结点的名字 * @param name 不包含root结点的拼接,ie: abc.def.i * @return */ private String[] parsePropertyName(String n

  • Java编程中的构造函数详细介绍

    本文主要是为新手.对java语言感兴趣的人和那些没有系统学习过java基础知识的人进行一个总结,在文章中对构造函数进行了较为详细的说明和讨论,也包含了我个人对于java面向对象中构造函数的一些看法.希望走在java学习道路上的同行者可以有一个较为清晰的认知和理解.当然仅为个人观点,水平有限,不足之处,还请大家多多指出,互相交流学习. 1.构造函数的概念 很多java新手谈到构造函数就会犯晕,我们先来看看什么是构造函数. 首先,构造函数是函数的一种特殊形式,特殊在哪里?构造函数中不需要定义返回类型

  • java中类和对象的知识点总结

    虽然说最近带着小伙伴们学了不少java中的知识点,但是对于最基本的概念,是每个小伙伴必不可少学习的要点.我们需要时时对它们进行复习和考察,才不会在后期结合其他的知识点而不会使用,下面小编就为大家带来java中类和对象的讲解,一起往下看看吧. 1.类和对象 类是一类对象的统称. 对象是这个类具体的一个实例. 基本语法为: class 类名{ //属性 //方法 } //例 class person{ public int age; public String name; public String

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

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

  • Java中ArrayList的使用详细介绍

    目录 1.ArrayList类 1.1ArrayList类概述 1.2ArrayList类常用方法 1.2.1构造方法 1.2.2成员方法 1.2.3示例代码 1.3ArrayList存储字符串并遍历 1.3.1案例需求 1.3.2代码实现 1.4ArrayList存储学生对象并遍历 1.4.1案例需求 1.4.2代码实现 1.5ArrayList存储学生对象并遍历升级版 1.5.1案例需求 1.5.2代码实现 总结 1.ArrayList类 1.1ArrayList类概述 在java中,我们会

  • java中类与对象的使用详情

    目录 1. 类的定义 2.对象的创建和使用 如何得到对象 如何使用对象 3.学生对象-练习 4.成员变量的默认值 1. 类的定义 面向对象是通过类和对象去描述和代表万千事物对象的,首先我们需要知道如何去定义一个类.类的组成是由属性和行为两部分组成 属性:在类中通过成员变量来体现(类中方法外的变量) 行为:在类中通过成员方法来体现(和前面的方法相比去掉static关键字即可) 类的定义格式 类的定义步骤: ①定义类 ②编写类的成员变量 ③编写类的成员方法 public class 类名 { //

  • Mongodb3.0.5 副本集搭建及spring和java连接副本集配置详细介绍

    Mongodb3.0.5 副本集搭建及spring和java连接副本集配置详细介绍 一.基本环境: mongdb3.0.5数据库 spring-data-MongoDB-1.7.2.jar mongo-Java-driver-3.0.2.jar Linux-redhat6.3 tomcat7 二.搭建mongodb副本集: 1.  分别在三台linux系统机上安装mongodb,(为避免和机器上原有的mongodb端口冲突,这里设为57017): 192.168.0.160 192.168.0.

随机推荐