Java学习---面向对象与多维数组

多维数组

定义: n维数组就是元素为n-1维数组的数组

  • int[] 数组名 int[][] 数组名
  • int 数组名 [] int[] 数组名[]

初始化:

  • 1 . 数据类型[][] 数组名 = new 数据类型[m][n];
    
  •  m:	二维数组中一维数组的个数
    
  •  n:	一维数组中的元素个数
    
  • 2. 数据类型[][] 数组名 = new 数据类型[m][];
    
  •  m: 二维数组中一维数组的个数
    
  • 3.数据类型[][] 数组名 = new 数据类型[][]{{元素1,元素2...},{元素1,元素2...},{元素1,元素2...}...};
    
  •  简写: 数据类型[][] 数组名 = {{元素1,元素2...},{元素1,元素2...},{元素1,元素2...}...};// 第一个次定义的时候可以简写
    

demo 遍历多维数组里面的所有的元素

public class ObjectDemo1 {
    public static void main(String[] args) {
        int[][] arr = new int[3][3];//{{0,0,0},{0,0,0},{0,0,0}}
        arr[1][2] = 100;
        System.out.println(arr[1][2]);


        int[][] arr2 = new int[4][];
        arr2[0] = new int[5];
        arr2[1] = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9};

        for (int i = 0; i < arr2.length; i++) {
            for (int j = 0; j < arr2[i].length; j++) {
                System.out.println(arr2[i][j]);
            }
        }
    }
}

面向对象

  •   面向过程: 注重事物实现的过程 . 面向过程的语言:  C
    
  •   面向对象: 注重事物实现的结果   面向对象的语言:python   c++  java   scala   JS   php
    

面向对象的三个特征: 封装, 继承, 多态 (抽象和类 )

  • 类:类是一个模板,它描述一类对象的行为和状态。

  • 对象:对象是类的一个实例,有状态和行为

对于事物的描述
特征描述映射到类里面 就是属性 变量
行为描述映射到类里面 就是方法

类里面的6大成员:
成员变量: 定义在类中方法外的变量,不被static修饰的变量叫做成员变量  对象变量
成员方法: 不被static修饰方法叫做成员方法
静态变量: 被static修饰的变量  都是静态变量
静态方法: 被static修饰方法  都是静态方法
局部变量: 定义在方法内部的变量 叫做局部变量  随着方法的调用而初始化  随着方法的消失而消失
构造方法: 方法名和类名一模一样  没有返回值(甚至连void都没有)的方法

** 如何根据类创建对象,格式:**
类名 对象名 = new 类名();

给对象赋值,就相当于是给类中的成员变量赋值:
对象名.成员变量名 = 初始化值;

成员方法的调用需要通过对象调用
对象名.成员方法名();

每次new都是创建了一个新的对象


一个文件内部定义多个类  只有一个类能被public修饰
而且  被public修饰的这个类  一定要跟文件名保持一致

demo:

ackage day07;

public class TeacherTest {
    public static void main(String[] args) {
        Teacher teacher = new Teacher();
        teacher.name = "王";
        teacher.age = 23;
        teacher.sex = "男";

        Teacher teacher1 = new Teacher();
        teacher1.name = "胡";
        teacher1.age = 21;
        teacher1.sex = "男";

        Teacher teacher2 = new Teacher();
        teacher2.name = "许";
        teacher2.age = 20;
        teacher2.sex = "女";

        teacher.show();



    }
}

class Teacher {
    String name;
    int age;
    String sex;

    public void show(){
        
        System.out.println("姓名:"+ name + "---性别:"+sex + "---年龄:"+ age);
    }

}

成员变量和局部变量:

 成员变量:  位于类中方法外  随着对象的创建而创建   随着对象的消失而消失
          位于堆内存中   有初始化值   又叫对象变量
 局部变量:  位于方法内部   作用范围只在当前方法内  随着方法运行而创建  随着方法的运行完毕而消失
          位于栈内存中   进栈和出栈操作

封装

  • 封装:

    1. 成员变量私有化: private 权限修饰符: public protected (default) private
  • private: 权限修饰符,私有的,修饰方法和变量, 被private 修饰的方法和变量,只能在本类中访问

  • 2.提供一套访问的修改的方法(get方法/set方法) this:区分同名的成员变量和局部变量,this指代的是成员变量

  •    封装:只允许本类访问
    
  •    特点:高内聚  低耦合
    
package day07.demo1;

public class DogDemo {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.setName("小白");
        dog.setAge(8);
        dog.setSex("男");
        dog.getAge();
        dog.getName();
        dog.getSex();
        dog.show();
    }
}

class Dog {
    private String name;
    private int age;
    private String sex;

    public void setName(String dogName) {
        name = dogName;
    }

    public String getName() {
        return name;

    }

    public void setAge(int dogAge) {
        if (dogAge <= 0 || dogAge >= 15) {
            System.out.println("你输入的年龄不符合狗的寿命");
            age = 3;
            return;
        } else {
            age = dogAge;
        }
    }

    public int getAge() {
        return age;

    }

    public void setSex(String dogSex) {
        if (dogSex.equals("公狗") || dogSex.equals("母狗")) {
            sex = dogSex;
        } else {
            System.out.println("你输入的性别有误,请重新运行");
            sex = "公狗";
            return;
        }
    }

    public String getSex() {
        return sex;
    }

    public void show() {
        System.out.println("姓名:" + name + "年龄:" + age + "性别:" + sex);
    }
}

构造函数

构造方法:
方法名和类名一模一样 但是没有返回值类型 连void都没有的方法 叫做构造方法
构造方法的主要作用就是为了创建对象而使用的

构造方法可以重载:
我们把有参数列表的构造方法叫做有参构造
把没有参数列表的构造方法叫做无参构造

  •   刚开始在创建对象的时候  我们没有写构造方法  为什么还能创建对象成功?
    

因为每个类里面默认的系统都会给定一个无参构造
只要你手动书写了一个构造方法 不管你手动书写的构造方法是无参还是有参
系统默认的那个无参构造都会消失

idea当中快速创建set和get方法的快捷键:
将光标放在类的成员变量上----> alt + Insert ---->选择Getter and Setter---->将要创建的成员变量都选中就可以了

idea 当中快速创建构造函数的方法的快捷键:
将光标放在类的成员变量上----> alt + Insert ---->选择Constructor---->将要创建的成员变量都选中就可以了(一个都不选择创建一个无参构造函数)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值