7_类和对象

面向对象的概念

  • 万物皆对象。

  • 面向对象指以属性和行为的观点去分析现实生活中的事物。

  • 面向对象编程指先以面向对象的思想进行分析,然后使用面向对象的编程语言进行表达的过程。

类和对象的概念

  • 对象主要指现实生活中客观存在的实体,在Java语言中对象体现为内存空间的一块存储区域。
  • 类简单来就是“分类”,是对具有相同特征和行为的多个对象共性的抽象描述,在Java语言中体现为一种引用数据类型,里面包含了描述特征/属性的成员变量以及描述行为的成员方法。
  • 类是用于构建对象的模板,对象的数据结构由定义它的类来决定。

类的定义

class 类名 {
    类体;
}
  • 通常情况下,当类名由多个单词组成时,要求每个单词首字母都要大写。

成员变量的定义

class 类名 {
    数据类型 成员变量名 = 初始值;
}
  • 当成员变量由多个单词组成时,通常要求从第二个单词起每个单词的首字母大写。

对象的创建

new 类名();
  • 当一个类定义完毕后,可以使用new关键字来创建该类的对象,这个过程叫做类的实例化。
  • 创建对象的本质就是在内存空间的堆区申请一块存储区域,用于存放该对象独有的特征信息。

引用的定义

  • 基本概念

    • 使用引用数据类型定义的变量叫做引用型变量,简称为“引用”。
    • 引用变量主要用于记录对象在堆区中的内存地址信息,便于下次访问。
  • 语法格式

    • 类名 用于变量名;
      引用变量名.成员变量名
      
    • Person p = new Person;
      p.name = "吕布";
          System.out.println(p.name);
      

实例

/*
	编程实现Person类的定义
*/

public class Person {
    // 数据类型 成员变量名 = 初始值; - 其中,初始值通常省略不写
    String name;	// 用于描述姓名的成员变量
    int age;		// 用于描述年龄的成员变量
    
    public static void main(String[] args) {
        Person p = new Person();
        System.out.println("我是" + p.name + ",今年" + p.age + "岁了!");
        
        p.name = "张飞";
        p.age = 30;
        System.out.println("我是" + p.name + ",今年" + p.age + "岁了!");
    }
}

/*
编程实现Person类的定义
*/

public class Point {
    int x;
    int y;
    public static viod main(String[] aargs) {
        Point p = new Point();
        System.out.println("横坐标是:" + p.x + ",纵坐标是:" + p.y);
        
        System.out.println("--------------------");
        
        p.x = 3;
        p.y = 5;
        System.out.println("横坐标是:" + p.x + ",纵坐标是:" + p.y);
    }
}

成员方法的定义

class 类名 {
    返回值类型 成员方法名(形参列表){
        成员方法体;
    }
}
  • 当成员方法由多个单词组成时,要求从第二个单词起每个单词的首字母大写。

返回值类型的详解

  • 返回值主要指从方法体内返回到方法体外的数据类型。
  • 返回值类型主要指返回值的数据类型,可以是基本数据类型,也可以是引用数据类型。
  • 当返回的数据内容是66时,则返回值类型写int即可。
  • 在方法体中使用return关键字可以 返回具体的数据内容并结束当前方法。
  • 当该方法不需要返回任何数据内容时,则返回值类型写void即可。

形参列表的详解

  • 形式参数主要用于将方法体外的数据内容带入到方法体内部。
  • 形式参数列表主要指多个形式参数组成的列表。

方法体详解

  • 成员方法体主要用于编写描述该方法功能的语句块。
  • 成员方法可以实现代码的重用

类中可变长参数的使用

  • 返回值类型 方法名(参数的类型... 参数名)
  • 方法参数部分指定类型的参数个数是可以改变的,也就是0~n个。
  • 一个方法的形参列表中最多只能声明一个可变长形参,并且需要放到参数列表的末尾。
public class Person {
    String name;
    int age;
    
    void setName(String n) {
        name = n;
    }
    
    void setAge(int a) {
        age = a;
    }
    
    void show() {
        System.out.println("我是" + name + ",今年" + age + "岁了!");
    }
    
    void setNameAge(String n, int a) {
        name = n;
        age = a;
    }
    
    void showArgument(int num, String... args) {
        for (int i = 0; i < args.length; i++) {
            System.out.println("第" + (i +1) + "个参数为:" + args[i]);
        }
    }
    
    public static void main(String[] args) {
        Person p = new Person();
        p.show();
        
        System.out.println("----------------------------");
            
        p.name = "zhangfei";
        p.age = 30;
        p.show();
        
        System.out.println("----------------------------");
        
        
    }
}

无参有返回值方法

public class Person {
    String name; 
    int age;
        
    String getName() {
        return name;
    }
    int getAge() {
         return age;
    }
    
    void show() {
        System.out.println("我是" + name + ",今年" + age + "岁了!");
    }
    
    public static viod main (String[] args) {
        String str1 = p.getName();
        System.out.println("获取到的姓名是:" + str1);
        
        int ib = p.getAge();
        System.out.println("获取到的年龄是:" + ib);
    }
}

方法的传参过程

参数传递的注意事项

  • 基本数据类型的变量作为方法的参数传递是,形参变量数值的改变通常不会影响到实参变量的数值,因为两个变量有各自独立的内存空间。
  • 引用数据类型的变量作为方法的参数传递是,形参变量指向内容的改变会影响到实参变量指向内容的数值,因为两个变量指向同一块内存空间。
  • 当引用数据类型的变量作为方法的参数传递是,若形参变量改变指向后再改变指定的内容,则通常不会影响到实参变量指向内容的改变,因为两个变量指向不同的内存空间。

原文地址:https://www.cnblogs.com/haitaoli/p/13720508.html