面向对象的抽象数据类型

一:面向对象的基本概念

1.1:面向对象的三大特性:

封装,继承,多态

2:类

把拥有相同特征、相同行为的群体称为类。 Java 中我们将拥有相同特征、行为的对象抽象成类 (class)

3:对象

指具体的某一个事物。在面向对象世界中,万事万物皆对象。

4:类和对象的关系

类是抽象表示,对象是具体的。类是对象的抽象(模板),对象是类的实例(具体)

1.2:定义类

1:定义类
(1)语法格式
[类修饰符] class 类名{ classBody }
(2):语法解析

类修饰符可以写,可以不写,目前一般用public

类名自定义,按照命名规范即可。类名的首字母要大写

class是声明类的关键字

classBody 可以有 类的成员、静态初始化、实例初始化、构造函数(方法)

(3):例题
 public class Person{
        
    }
2:类的字段
(1)定义字段的语法格式
[访问修饰符] 数据类型 字段名;
(2)例题
public class Person{
        String name; //定义姓名字段
        int age;  //定义年龄字段
    }
3:类的方法
(1)类的成员:
  1. 成员变量

    • 类变量(static)

    • 实例变量

  2. 成员方法

    • 类方法(static)

    • 实例方法

  3. 成员类/接口【后边介绍】

(2) 有 static 的方法属于类,叫做 类方法/static(静态)方法。用 类名.方法名([实参列表]) 来调用
  • 没有 static 的属于 对象(实例),叫做 实例方法(instance-method)。 用 对象.方法名([实参列表]) 来调用
  • 无论有无 static 都是成员方法, 都是类的成员

  • 成员变量: 在类中(方法外)声明的变量, 在创建对象时会进行初始化(默认值)。

  • 实例变量:: 每个对象的实例变量不共享。

(3)例题

在“人”的类中定义“介绍”的方法,用于描述人的行为。

 public class Person {
        String name; //定义姓名字段
        int age;  //定义年龄字段
​
        //定义工作方法
        public void introduce() {
            System.out.printf("我是 %s,今年 %d 岁", name, age);
      }
     }

1.3:创建和使用对象

1:创建对象

类的对象可以调用类中的成员,如调用类的字段,调用类的方法等。

(1)创建对象的语法格式
类名 对象名 = new 类名();
(2)语法解析

new是关键字,称为实例化;

左边的类名为对象的数据类型;

右边的类名()称为类的构造方法。

2:使用对象
(1)语法格式
对象名.属性
对象名.方法名()
(2)例题
public class Person {  //定义person类
    String name;  //定义姓名字段
    String gender;
    int age;
​
    //定义introduce方法
    public void introduce(){
        System.out.printf("我是%s,性别是%s,今年%d岁了 \n",name,gender,age);
    }
​
    public static void main(String[] args) {
        Person songjiang = new Person();  //实例化对象宋江
        //为各字段赋值
        songjiang.name = "宋江";
        songjiang.gender = "男";
        songjiang.age = 18;
        songjiang.introduce();  //调用对象的introduce方法。
    }
}

二:对象的构造和初始化

调用构造方法时,步骤如下:

(1)分配新对象的空间,并进行默认的初始化。在 Java 中,这两步是不可分的,从而可 确保不会有没有初值的对象。

(2)执行显式的成员初始化。

(3)执行构造方法,构造方法是一个特殊的方法

2.1成员变量

2.1.1作用域

类中的字段是直接定义在类的内部、方法的外部的变量,称作成员变量。Person类中 的name、gender既不属于eat( )方法,也不属于work( )方法,而是属于Person类本身的 字段,它们都是Person类的成员变量,成员变量的作用域是整个类。当定义一个类的 成员变量时,可以选择在定义时进行初始化。这样做可以为成员变量指定一个默认 值。

举个例子,在Java中,你可以在定义一个Person类时将gender成员变量初始化 为"男",以表示性别默认为"男"。

2.1.2 成员变量和局部变量的区别

作用域不同。局部变量的作用域仅限定于定义它的方法,在该方法外无法被访 问。成员变量的作用域是在整个类内,所有的成员方法都可以使用它。如果访 问权限允许,还可以在类外部使用成员变量。 初始值不同。对于成员变量,如果在类定义中没有给它赋予初始值,Java会给它 赋一个默认值,byte、short、int、long类型的默认值是0,boolean类型的默认值 是false,char类型的默认值是'\u0000'(空字符),float、double类型的默认值是 0.0,引用类型的默认值是null。但是java不会给局部变量赋初始值,因此局部变 量在使用前必须初始化。

2.2 构造方法

2.2.1:构造方法的定义
[访问修饰符] 方法名 ([参数列表]){
//省略方法体的代码
}

构造方法的分类:默认构造方法和自定义构造方法。

语法解析

构造方法没有返回值

默认的构造方法没有参数

构造方法的方法名必须与类名相同。

例题

为person1类定义一个构造方法

public class Person1 {
    int age;
    String name;
​
    public Person1(){
        this.name = "喵星人";
        this.age = 23;
    }
​

2.2.3 方法重载

1:方法重载的定义

是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数类型或参数个数或参数顺序。

2:如何构造方法的重载

3:static的作用:

static 表示静态的,可以修饰字段和方法。

被static修饰的字段或方法属于类,通过类名调用. 也可以被 对象调用 【但是不推荐】

没有 static 修饰的属于对象,通过对象来调用

static 成员可以相互调用(使用), non-static(instance)可以互相调用,也可以调用 static 的
static 成员属于类,多个对象共享
4:实例化的过程
  • 第一次加载类时进行静态初始化(只执行一次)

  • 每次创建对象时,先进行实例初始化再执行构造 ps: 实例初始化的位置会影响实例变量最终的值(Java代码优化)

  • 执行构造

5:静态初始化

可以有多个,在类第一次被加载的时候执行,且只会执行一次。

初始化语法

static{
//静态初始化代码块
}

静态初始化的执行顺序是按照代码块在类中出现的顺序依次执行的。

实例初始化

在实例化的时候执行,且每次实例化都会执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值