java笔记面向对象初级基础

面向对象编程初级

1. 类与对象。

类是抽象的,对象是具体的

public class demo01 {
//      类是一个抽象的,对象是一个具体的。
//      比如 猫类就是一个抽象的概念,而花猫,加菲猫就是具体的。
    public static void main(String[] args) {
//          让抽象的类实例化成为具体的对象
//          给猫设定个性的属性和行为
        Cat flowerCat = new Cat();
        flowerCat.name = "花猫";
        flowerCat.age = 1;
        flowerCat.speak();
        Cat JiafCat = new Cat();
        JiafCat.name = "加肥猫";
        JiafCat.age = 3;
        JiafCat.speak();
    } 
  //      创建一个class的猫类。
 //      可以给猫类规定一些属性和行为
    class Cat {
        public String name;
        public int age;
        public void speak() {
            System.out.println("我叫" + name + "我今年" + age + "岁了" + "我会喵喵喵");
        }
    }
    //输出:
    //我叫花猫我今年1岁了我会喵喵喵
    //我叫加肥猫我今年3岁了我会喵喵喵
2.成员方法
2.1定义:

访问修饰符 返回数据类型 方法名(形参列表…) {

​ //方法体 语句;

​ return 返回值;

}

2.2注意事项和使用细节
2.2.1访问修饰符:

java 提供四种访问控制修饰符号,可以用来修饰类的属性,成员变量,和类。注意的是只有默认的和public才能修饰类!,并且遵循上述访问权限的特点。

在这里插入图片描述


2.2.2返回数据类型:
  1. 一个方法最多有一个返回值

  2. 返回类型可以为任意类型,包含基本类型或引用类型(数组,对象)

  3. 如果方法要求有返回数据类型,则方法体中最后的执行语句必须为 return 值; 而且要求返回值类型必须和 return 的 值类型一致或兼容

  4. 如果方法是 void,则方法体中可以没有 return 语句,或者 只写 return


2.3成员方法调用机制

在这里插入图片描述

2.4成员方法传参机制
2.4.1基本数据类型传参的机制

可以用一个例子,比如声明两个变量,然后写一个成员方法将两个变量传入形参并交换数值。最后在观察两个变量是否会发生变化

public class demo02 {
    //成员方法基本数据类型传参机制
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        AA obj = new AA();
        obj.swap(a, b); //调用swap方法
        //最后查看a,b数值
        System.out.println("main 方法 a=" + a + " b=" + b);//a=10 b=20
    }
}
class AA {
    public void swap(int a,int b){
    //交换前的数值
        System.out.println("\na 和 b 交换前的值\na=" + a + "\tb=" + b);//a=10 b=20
    //完成了 a 和 b 的交换
        int tmp = a;
        a = b;
        b = tmp;
        System.out.println("\na 和 b 交换后的值\na=" + a + "\tb=" + b);//a=20 b=10
    }
}

总结:基本数据类型,传递的是值(值拷贝),形参的任何改变不影响实参!

在这里插入图片描述

2.4.2 引用数据类型传参的机制

同样可以用一个例子,比如声明一个数组,然后写一个成员方法数组传入形参并修改数组数值。最后在观察数组是否会发生变化

public class demo03 {
    public  static  void main(String[] args) {
        //成员方法引用数据类型传参机制
          int[] a={1};
          BB abj = new BB();
          abj.swap(a);
         System.out.println(a[0]);//4
    }
}
class BB {
    public void swap(int a[]){
        a[0]=4;
    }
}

总结:引用类型传递的是地址(传递也是值,但是值是地址),可以通过形参影响实参

在这里插入图片描述

3.方法递归

简单的说: 递归就是方法自己调用自己,每次调用时传入不同的变量.递归有助于编程者解决复杂问题,同时可以让代码变 得简洁

如图:

在这里插入图片描述

4.重载

基本介绍:

java 中允许同一个类中,多个同名方法的存在,但要求 形参列表不一致!

1)方法名:必须相同

2)形参列表:必须不同(形参类型或个数或顺序,至少有一样不同,参数名无要求)

3)返回类型:无要求

public class demo04 {
    public static void main(String[] args) {
        //方法重载
        A AA=new A();
        AA.B(1,2);
        AA.B(1);
    }
}
class A{
   public void  B(int a,int b){
       System.out.println("这是参数一");
   }
    public void  B(int a){
        System.out.println("这是参数二");
    }
}
5.可变参数

基本概念

java 允许将同一个类中多个同名同功能但参数个数不同的方法,封装成一个方法。 就可以通过可变参数实现

基本语法

访问修饰符 返回类型 方法名(数据类型… 形参名) { }

如:若一个类中多个同名同功能但参数个数不同的求和方法,使用可变参数可以使代码更加简洁高效

public class demo05 {
                      //可变参数
    public static void main(String[] args) {
            int[]a={1,2,3,4,5,6,8};
            T t =new T();
//            t.f1(a); 可加入数组
            t.f1(1,2,5);
    }
}
class T {
    public void f1(int... nums) {
        int num=0;
        for (int i=0;i<nums.length;i++){
            num+=nums[i];
        }
        System.out.println("长度=" + nums.length+"求和为"+num);}
}

注意

1)可变参数的实参可以为0个或任意多个。

2)可变参数的实参可以为数组。

3)可变参数的本质就是数组.

4)可变参数可以和普通类型的参数一起放在形参列表,但必须保证可变参数在最后

5)一个形参列表中只能出现一个可变参数

6.作用域

**全局变量:**也就是属性(成员变量),作用域为整个类体性,可以被本类使用,或其他类使用。

局部变量:一般是指在成员方法中定义的变量,只能在本类中对应的方法中使用

注意事项和细节使用

1.属性和局部变量可以重名,访问时遵循就近原则。

2.在同一个作用域中,比如在同一个成员方法中,两个局部变量,不能重名。

3.全局变量生命周期较长,伴随着对象的创建而创建,伴随着对象的销毁而销毁,可加修饰符

局部变量生命周期较短,伴随着它的代码块的执行而创建, 伴随着代码块的结束而销毁。即在一次方法调用过程中

不可加修饰符

7.构造方法

基本语法

[修饰符] 方法名(和类名一样)(形参列表){方法体; }

作用:我们在创建人类对象时,是先把一个对象创建好后,再给他的年龄和姓名属性赋值。如果现在要求,在创建人类的对象时,就直接指定这个对象的年龄和姓名。这时就可以使用构造方法。

注意:

  1. 构造方法的修饰符可以默认, 也可以是 public protected private

  2. 构造方法没有返回值

  3. 方法名 和类名字必须一样

  4. 参数列表 和 成员方法一样的规则

  5. 构造方法的调用, 由系统完成

在这里插入图片描述

8.this关键字
  1. this 关键字可以用来访问本类的属性、方法、构造器

  2. this 用于区分当前类的属性和局部变量

  3. 访问成员方法的语法:this.方法名(参数列表);

  4. 访问构造方法语法:this(参数列表); 注意只能在构造方法中使用(即只能在

构造方法中访问另外一个构造方法, 必须放在第一 条语句)

  1. this 不能在类定义的外部使用,只能在类定义的方法中使用。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值