栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java面向对象-对象和类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java面向对象-对象和类

面向对象

第一章 Java面向对象-对象和类


文章目录
  • 面向对象
  • 面向对象编程(OOP)
  • 一、对象和类
    • 1. 类
    • 2. 对象
        • (1)main方法在当前类中
        • (2)main方法在其他类中
    • 3. 初始化对象


面向对象编程(OOP)

什么是面向对象

面向对象编程的全称是Object Oriented Programing .要理解面向对象就要先理解面向过程,因为在面向对象出现之前只有面向过程。
面向对象就像是你想吃面,你告诉老板你是吃板面还是吃拉面,面向过程就是你自己准备食材一步步做饭。
面向过程需要一步步推进度,作完上一步才能做下一布;面向对象的特点是模块化,大家一人一个,谁也不用管谁。
面向对象的底层依然是面向过程,只不过是把过程抽象化一个个对象,封装成类,供我们调用。


一、对象和类

生活中有很多的对象,一个人,一棵树。类就是人类,数目这种抽象的类目、类别。类是对象的模板,对象是类的实例化,对象不止可以是现实中的实体也可以是虚拟化的事物。

1. 类
package com.Fregata;
public class Person {
    String name;
    int age;     //成员变量(实例变量),只能通过类的实例(对象)来访问
    char sex;
    static int data=1;  //静态变量(类变量),可以直接被类访问。静态变量除了被声明为常量外很少使用。
    
    public Person() {
    	//这是默认的构造方法,经过反编译可以看到。
    }
    
    public void sayHello(){
    	//这是一个方法(无参无返回值)
    }
    public void sayHi(){
    	
    }
}

类包含以下三项:

  • 字段(Filed)
    • 字段也称为成员变量,在类内部但在方法外部,方法内部的叫临时变量或局部变量。在上面的PersonTest类中包含4个成员变量,分别是name,age,sex和data,其中data是静态变量。
      成员变量也叫做实例变量,其在编译时不占用内存空间,在运行时获取内存,也就是说,只有在对象实例化(new Person())后,字段才会获取到内存,这也正是它被称作“实例”变量的原因。
  • 方法(Method)
    • sayHi()和sayHello(),表示 Person这个对象可以做的事,也就是打招呼。
  • 构造方法(Constructor)
    • public Person() { } 这是一个默认的构造方法

关于以上三项接下来还会详细讲解。

一个类可以创建多个对象

类就是一种引用类型,是我们自己创造的一种类型,是自定义数据类型

2. 对象

创建一个对象 创建对象需要使用new

public static void main(String[] args){
// 基本数据类型  变量名  = new 
    int[] arr = new int[10];
//   类   对象名   =   new 
//  引用类型  引用    指向    对象           引用全称引用类型变量
    Person  person     =   new Person();
//    声明了一个Person类型的引用 person ,指向了一个Person对象
//    相当于把对象赋给了引用类型变量person,后续用person这个引用指代对象。
//person 被称为对象 Person 的引用变量
	person.name="wang";
	person.age=13;
	
}

Person person = new Person();
包含两部分
1.Person person;
2.person = new Person();
Person person声明一个Person类型的变量person,这个变量和数组类似有两块内存,一块存放实际内容,一块存放实际内容的位置。声明变量本身只会分配存放位置的内存空间,这块空间还没有指向任何实际内容。
这种只存储实际内容的位置而不存储数据的变量被称为引用变量。
**person = new Person()**创建了一个实例或对象,然后复制给了变量person,实际做了两件事:
1)分配内存,来存储新对象的数据包括对象的属性。
2)给实例变量设置默认值。

通过对象来访问和操作其内部的数据是一种基本的面向对象思维。

上面我们用对象给变量进行了赋值,这是不提倡的。

一般情况下,应该通过对象的方法对实例变量进行操作。

通过Person类创建了person对象,所有对象在创建的时候都会在堆内存中分配空间。
对象创建需要在main方法中进行,main方法可以在当前类中,也可以在其他类中创建。

(1)main方法在当前类中
public class Person {
    private String name;
    private int age;
    private int sex;

    private void sayHi() {
    }

    private void sayHello() {
    }

    public static void main(String[]  args){
    	Person person = new Person();
    }
}
(2)main方法在其他类中


实际开发中,我们通常不在当前类中直接创建对象并使用它,而是放在使用对象的类中,比如说上图中的 StudentTest 类。
可以把 PersonTest 类和 Person 类放在两个文件中,也可以放在一个文件(命名为 PersonTest.java)中,就像下面这样。

public class PersonTest {
    public static void main(String[] args) {
        Person person = new Person();
    }
}
class Person;
	private String name;
    private int age;
    private int sex;
3. 初始化对象

new对象时会给所有成员变量赋默认值,规则如下

byte,short,int,long,char-------------------0
float,double-------------------------------0.0
boolean------------------------------------false
引用类型------------------------------------null

要给成员变量初始化才能在后续使用变量。
初始化对象有三种方法

  • (1)通过对象的引用变量

person 被称为对象 Person 的引用变量

public class Student {
    String name;
    int age;
    String address;
    void study(){
        System.out.println(name+"在学习");
    }
    void sayHi(){
        System.out.println("雷猴,我叫"+name+"我的年龄是"+age+",我家在"+address);
    }

    public static void main(String[] args) {
        Student student=new Student();
        student.name="goog";
        student.age=13;
        student.address="china";
        student.study();
        student.sayHi();
    }
}

  • (2)通过方法初始化
public class Student {
    String name;
    int age;
    String address;
    public void introduce(String name1.int age1,String address1){
    	name=name1;
    	age=age1;
    	address=address1;
    }

    public static void main(String[] args) {
        Student student=new Student;
        student.introduce("李丽",12,"山东");
        System.out.println(student.name);
        System.out.println(student.age);
        System.out.println(student.address);

    }
}

  • (3)通过构造方法初始化

这也是最标准的一种做法,直接在 new 的时候把参数传递过去。

public class Student {
    String name;
    int age;
    String address;
    public Student(String name.int age,String address){
    	this.name=name;
    	this.age=age;
    	this.address=address;
    }
    public static void main(String[] args) {
		Student student=new Student("李丽",12,"山东");
		System.out.println(student.name);
        System.out.println(student.age);
        System.out.println(student.address);
       
	}
	

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1010588.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号