Java基础学习到深入6(重载/可变参数/作用域/构造器/对象创建流程/访问修饰符)

重载

  • 重载是指可以在同一个类下定义很多同名方法,但是形参不能一样,比如System.out.prinln()下out里的println其实是很多方法,比如既可以输出数字,也可以输出字符串等,方法名一样,但是形参不一样。
  • 重载例子:
public class OverLoad {
    public static void main(String[] args) {
        A2 a2 = new A2();
        a2.a1(1 ,2);
        System.out.println(a2.a1(5.3,6.2));
    }
}
class A2 {
    public void a1(int a, int b){
        System.out.println("dads");
    }
    public int a1(double a, double b ) {
        return (int)( a + b);
    }
}
  • 判断是否为重载
  1. 方法名必须一样
  2. 形参中参数的类型、顺序、个数必须要有一个不一样。
  3. 返回类型不用管,如果返回类型不同,形参和名字完全一样,也不能构成重载。

可变参数

  • 是指同一个类下多个同名同功能的不同个数的参数的方法,封装成一个方法.此时的多个当做一个数组来使用。参数个数为0或多个。
  • 使用场景为不确定的参数个数时使用。
  • 可变参数可以和普通类型的参数一起放在形参列表,但必须保证可变参数在后。
  • 例子:
public class Varparameters {
    public static void main(String[] args) {
        Var var = new Var();
        System.out.println(var.sum(1,5,6,7,8,8));   //传入的实参也可以是数组,例如arr[]
    }
}
class Var {
    public int sum(int ... num) {     //此时的num当做一个数组来使用
        int res = 0;
        for (int i = 0; i < num.length; i++) {
            res += num[i];
        }
        return res;
    }
}

作用域

  • 局部变量
    • 属性和局部变量可以重名;遵循就近一致原则
    • 只能在本类中对应方法中使用
  • 全局变量
    • 可以被本类使用,或其他类使用

构造器

  • 构造方法又叫做构造器,它的主要作用是完成新建对象的初始化
  • 例子:
public class Constructor {
    public static void main(String[] args) {
        Person p1 = new Person("klkl", 12);
        System.out.println(p1.name + " " + p1.age);
    }
}
class Person {
    String name;
    int age;
    public Person(String name1, int age1) {
        System.out.println("构造器被调用");
        name = name1;
        age = age1;
    }
}
  • 输出结果为构造器被调用,klkl,12。
  • 如果没有定义构造器,则系统自动有默认无参构造器

对象创建流程

  1. 加载类信息,只创建一次
  2. 在堆空间里创建对象
  3. 对对象进行初始化
    a. 默认初始化
    b. 显式初始化
    c. 构造器初始化化
  4. 将对象所在堆空间的地址返回给对象名(即引用)

this的含义

  • 在使用构造器时,如果想达到参数名和属性名一模一样的话,可以使用this;
  • 分析以下代码
class Person2 {
   String name;
   int age;
   public Person2(String name, int age){
       name = name;
       age = age;
   }
  }
  • 这种情况下构造函数的参数和对象里的属性同名,会分不清谁是传进来的参数,谁是需要赋值改变的参数。所以需要在写成
public Person2(String name, int age){
        this.name = name;
        this.age = age;
    }
  • 明确了this.name所指的属性是当前对象的属性。所以电脑就不会分辨不出谁是谁。以此便完成了赋值。
  • 简单来说,哪个函数调用,this就代表那个函数的对象。

常说的IDE的是什么

  • 是指集成开发环境
  • 例如IDEA,Eclipse
  • 快捷键,需要自己设置,以下是我自己设置的
    • ctrl + d :快速删除一行
    • alt + enter: 自动补齐该行所需的类
    • 快速整理格式(在键盘映射里搜format):ctrl + alt + L
    • 快速运行(搜索run): alt + R
    • 查看类的继承关系:ctrl + H(要先用鼠标选中类名)
    • 将光标放在方法上,ctrl + B,可以快速定位方法所在位置
    • 自动分配变量名,例如先打new Scanner(System.in)再在末尾加.var,即可自动生成;

  • 包的本质:同一类名的java类可以放在不同的文件下而不冲突
  • 例子:
package com.example.use;

import com.example.jiandao.Jiandao;

public class Test {
   public static void main(String[] args) {
       Jiandao jiandao = new Jiandao();
       System.out.println(jiandao);
       com.example.classstudy.Jiandao jiandao1 = new com.example.classstudy.Jiandao();
       System.out.println(jiandao1);
   }
}
  • 这里通过引用两个不同包下的同名java类,可以实现对不同包下的同名类进行区分。
    在这里插入图片描述
  • 引入包:
    import java.util.Scanner;,只引入一个类Scannner。
    import java.util.*,将util下所有类都引入

访问修饰符

  • 所有种类有public, protected, private, 默认
  • 访问修饰符可以用来修饰类中的属性,成员方法,类
  • 访问权限:
    • public : 同类,同包,子类,不同包都可以访问
    • protected : 同类,同包,子类可以访问,但是不同包不可以访问
    • 不加修饰符 : 同类,同包下可以访问,子类和不同包不可以访问
    • private : 只有同类下才能访问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xinshuai9333

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值