Java基础知识(四) -- 面向对象(上)

1.概述

  Java语言是一种面向对象的程序设计语言,而面向对象思想(OOP)是一种程序设计思想,在面向对象思想的指引下,使用Java语言去设计、开发计算机程序。这里的对象泛指现实中一切事物,每种事物都具备自己的属性行为

  面向对象思想就是在计算机程序设计过程中,参照现实中事物,将事物的属性特征、行为特征抽象出来,描述成计算机事件的设计思想。它区别于面向过程思想(POP),强调的是通过调用对象的行为来实现功能,而不是自己一步一步的去操作实现。面向对象的语言中,包含了三大基本特征,即封装继承多态

2.类和对象

2.1 什么是类?

  • :是一类具有相同特性的事物的抽象描述,是一组相关属性行为的集合。可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述该类事物。

现实中,描述一类事物:

  • 属性:就是该事物的状态信息。
  • 行为:就是该事物能够做什么。

举例:小猫。

​ 属性:名字、体重、年龄、颜色。
​ 行为:走、跑、叫。

2.2 什么是对象?

  • 对象:是一类事物的具体体现。对象是类的一个实例,必然具备该类事物的属性和行为。现实中,一类事物的一个实例:一只小猫 。
    • 属性:tom、5kg、2 years、yellow。
    • 行为:溜墙根走、蹦跶的跑、喵喵叫。

2.3 类与对象关系

  • 类是对一类事物的描述,是抽象的,概念的;比如人类,猫类…, 即它是数据类型。
  • 对象是一类事物的实例,是具体的, 即是实例。
  • 类是对象的模板,对象是类的实体

2.4 对象在内存中的存在形式

在这里插入图片描述

3.类的定义和对象的创建

Java中用class描述事物也是如此:

  • 成员变量:对应事物的属性。[成员变量=属性=field(字段)]
  • 成员方法:对应事物的行为

3.1 类的创建

类的定义格式:

public class ClassName{
   
    //成员变量
    //成员方法
}
  • 定义类:定义类的成员,包括成员变量成员方法
  • 成员变量:和定义变量几乎是一样的。只不过位置发生了改变。在类中,方法外
  • 成员方法:和main方法格式类似。只不过功能和形式更丰富了。
public class Person{
   
    //成员变量
    String name; //姓名
    int age; // 年龄
    boolean isMarried;
    
    public void walk(){
   
        System.out.println("人走路...")
    }
    
    public String display(){
   
        return "名字:"+ name + ",年龄:" + age + ",Married:" + isMarried;
    }
}

3.2 对象的创建

对象的定义格式

new 类名() // 匿名对象
    
// 把创建的对象用一个引用数据类型的变量保存起来    
类型 对象名 = new 类名();

Q:对象名中存储的是什么? A: 对象地址

//如果两个类都在一个.java源文件中,只能有一个类是public的
class Student{
   
    
}
public class TestStudent{
   
    //Java程序的入口
    public static void main(String[] args){
   
        System.out.println(new Student());//JavaBase.Student@4554617c

        Student stu = new Student();
        System.out.println(stu);//JavaBase.Student@74a14482
        
        int[] arr = new int[5];
		System.out.println(arr);//[I@1540e19d
    }
}

从上述的运行结果可以看出, 学生对象和数组对象类似,直接打印对象名和数组名都是显示“类型@对象的hashCode值",所以类、数组都是引用数据类型,引用数据类型的变量中存储的是对象的地址,或者说指向堆中对象的首地址。

3.3 类和对象的内存分配机制

Java 内存的结构分析:

    1. 栈: 一般存放基本数据类型(局部变量)
    1. 堆: 存放对象(Cat cat , 数组等)
    1. 方法区:常量池(常量,比如字符串), 类加载信息

示例:

public class TestCat {
   
    public static void main(String[] args) {
   
        Cat cat = new Cat();
        cat.name = "小花";
        cat.age = 3;
        cat.color = "白色";
        System.out.println("小猫信息" + cat.name
                + " " + cat.age + " " + cat.color);
    }
}

在这里插入图片描述

3.4 成员变量

3.4.1 成员变量分类
  • 实例变量:没有static修饰,也叫对象属性,属于某个对象的。
  • 静态变量:有static修饰,也叫类变量,属于整个类的,不是属于某个实例。
3.4.2 成员变量的定义
【修饰符】 class 类名{
   
    【修饰符】 数据类型 属性名; // 属性有默认值
    【修饰符】 数据类型 属性名 =; // 属性有初始值
}

例:声明一个中国人

class Chinese{
   
    static String country;
    String name;
    char gender = '男'; // 显式赋值
}
3.4.3 成员变量的访问
1.类变量
类名.静态成员变量  //推荐
对象名.静态成员变量 //不推荐
2.实例变量
对象名.普通成员变量  //只能使用这种方式
public class TestChinese{
   
    public static void main(String[] args){
   
        // 类变量的访问方式:类名.静态成员变量
        System.out.println(Chinese.country)
        
        Chinese c1 = new Chinese();
		//对象名.普通成员变量
		System.out.println(c1.name);
		//静态的成员变量也可以通过对象.进行访问
		//对象名.普通成员变量
		System.out.println(c1.country);
        System.out.println(c1.gender);
    }
}

class Chinese{
   
    static String country;
    String name;
    char gender = '男';
}
3.4.4 成员变量的特点
1.成员变量有默认值
基本类型 整数(byte,short,int,long) 0
浮点数(float,double) 0.0
字符(char) ‘\u0000’
布尔(boolean) false
引用类型 数组,类,接口 null
2.类变量的值是所有对象共享,而实例变量的值是属于每个对象
public class TestChinese {
   
    public static void main(String[
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值