10.22每日学习打卡

方法重载

形参列表不一致

  • 方法名必须相同

  • 参数列表必须不同

  • 返回类型无要求

可变参数

Java允许将同一个类中多个同名同功能但参数个数不同的方法,封装成一个方法

例:public void Method(int...a){}

  • 参数可以是0或任意多个

  • 实参可以为数组

  • 可变参数的本质就是数组

  • 如果还有其他形参,可变参数必须放在最后

  • 一个形参列表只能有一个可变参数

public class Demo11 {
    public static void main(String[] args) {
​
        HspMethod hspMethod = new HspMethod();
        System.out.println(hspMethod.sum(1,5,6,8,7));
​
    }
    static class HspMethod{
        //可变参数
        //...代表可变参数,类型是int,parametors可以接受多个int
        public int sum(int... parametors){
            int sum = 0;
            //当做数组使用
            for (int i = 0; i < parametors.length; i++) {
                sum +=parametors[i];
            }
            return sum;
        }
    }
}

访问修饰符

  • public 对外公开

  • protected 对子类和同一个包中的类公开

  • 默认无修饰符 向同一个包的类公开

  • private 只有类本身可以访问,不对外公开

封装继承和多态

封装

  1. 将属性私有化(不能直接修改属性)

  2. 提供set方法,用于赋值

  3. 提供get方法,用于获取属性的值

继承

  1. 子类会自动拥有父类的定义的属性和方法

  2. 父类也叫超类,基类

  3. 子类又叫派生类

多态

方法或对象具有多种形态,多态是建立在封装和继承基础之上的

  • 重写和重载就体现多态

  • 对象的多态

    • 一个对象的编译类型和运行类型可以不同

    • 变异类型在定义对象时就确定了,不能改变

    • 运行类型是可以变化的

    • 编译类型 对象名 = new 运行类型

  • 向上转型

    • 父类的引用指向了子类的对象

    • 可以调用父类中的所有成员

    • 不能调用子类中特有的成员

  • 向下转型

    • 子类类型 引用名 = (子类类型)父类引用;

    • 只能强转父类的引用。不能强转父类的对象

    • 要求父类的引用必须指向的是当前目标类型的对象

    • 可以调用子类类型中的所有成员

​
public class Demo11 {
    public static void main(String[] args) {
        Animal animal = new Cat();
        Object obj = new Cat();
        //多态的向下转型
        //此时cat的编译类型是Cat  看左边
        //运行类型也是Cat   看右边
        //父类的引用必须指向当前目标类型的对象
        //强转之后的animal仍然指向之前的cat对象
        //新的cat1也指向该cat对象
        Cat cat1 = (Cat) animal;
        Cat cat2 = (Cat) obj;
​
        ((Cat) animal).Catch();
        ((Cat) obj).Catch();
​
    }
​
    static class Animal{
​
​
    }
    static class Cat extends Animal {
​
        public  void Catch(){
            System.out.println("我是mao");
        }
    }
}
​
​

访问属性值看编译类型

调用方法看运行类型

多态数组

数组的定义类型为父类类型,里面保存的元素实际类型为子类类型

多态参数

方法定义的形参类型为父类类型,实参类型允许为子类类型

动态绑定机制

  1. 当调用对象方法的时候,该方法会和该对象的内存地址/运行类型绑定

  2. 当调用对象属性时,没有动态绑定机制,哪里声明,哪里使用

Obeject类详解

==和equals

==

  • 判断基本类型,判断值是否相等

  • 判断引用类型,判断地址相等

equals

  • 是Obejct类中的方法,只能判断引用类型

  • 默认判断地址是否相等,子类中重写该方法后可以用于判断内容是否相等

hashCode方法

  • 提高哈希表的性能

  • 两个引用,如果指向的是同一个对象,则哈希值肯定是不一样的

  • 两个引用,如果指向的是不同对象,则哈希值是不一样的(在很小的概率下,有可能一样)

  • 哈希值主要根据地址号来的,不能完全将哈希值等价于地址

toString方法

  1. 默认返回:类名+@+哈希值的十六进制,子类往往重写toString方法,用于返回对象的属性信息

  2. 返回该对象的字符串形式

  3. 打印或拼接对象时,都会自动调用该对象的toString形式

  4. 当直接输出一个对象时,toString方法会被默认的调用

finalize方法

  • 当垃圾回收期确定不存在该对象的更多引用时,由对象的垃圾回收器调用此方法(何时使用)

  • 对象被回收时,系统自动调用该对象的finalize方法,子类可以重写该方法,做一些释放资源的操作

  • GC机制是由系统决定,也可以通过System.gc()主动触发垃圾回收机制

断点调试

指在程序某一行设置断点,调试时(Buging时)程序到这一行就会停住,之后手动点击下一步

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值