后端学习日记day11

大二电子信息工程小白一枚,想自学后端毕业去找工作,为了提高学习效率,想记录总结一下每天学习的内容,若有志同道合的小伙伴可以一起打卡,有大佬的话也希望能提一些建议,感谢!

4.29

今天学习时间有点多,学了好多内容,不过感觉有点走马观花了,这时写日记的作用就体现了,要写日记就不得不重新再去总结,哈哈

今天学的第一块是多态,多态也就是对象的多种形态,使用多态的前提是有继承或者实现的关系,然后有父类引用指向子类对象,有方法的重写,多态的好处是使用父类型作为参数,可以接收所有的子类对象,不过多态也有弊端,就是不能使用子类特有的功能,当然也有解决方法,就是使用强制类型转换

第二块是包和final,用一张图概括final

第三块是权限修饰符和代码块

第三块是抽象类和抽象方法

最后学了接口,不过还没学完

多态的代码笔记

package com.itheima.polymorphismdemo.polymorphismdemo01;

public class Test {
    public static void main(String[] args) {
        //创建对象(多态方式)
        //Fu f = new Zi()
        Animal a = new Dog();
        //调用成员变量:编译看左边,运行也看左边
        //编译看左边:javac编译代码的时候,会看左边父类中有没有这个变量,如果有,编译成功,如果没有,编译失败
        //运行也看左边:java运行代码的时候,实际获取的就是左边父类中成员变量的值
        System.out.println(a.name);//动物

        //调用成员方法:编译看左边,运行看右边
        //编译看左边:javac编译代码的时候,会看左边的父类有没有这个方法,如果有,编译成功,如果没有编译失败
        //运行看右边:java运行代码的时候,实际上是运行的子类中的方法
        a.show();//Dog--show方法

        //理解
        //Animal a = new Dog();
        //现在用a去调用变量和方法
        //a是Animal类型的,所以默认都会从Animal这个类中去找

        //成员变量:在子类的对象中,会把父类的成员变量也继承下来。父:name  子:name
        //成员方法:如果子类对方法进行了重写,那么在虚方法表中是会把父类的方法覆盖的
    }



}

class Animal{
    String name = "动物";

    public void show(){
        System.out.println("Animal--show方法");

    }
}

class Dog extends Animal{
    String name ="狗";

    @Override
    public void show() {
        System.out.println("Dog--show方法");
    }

}

class Cat extends Animal{
    String name ="猫";

    @Override
    public void show() {
        System.out.println("Cat--show方法");
    }

}
package com.itheima.polymorphismdemo.polymorphismdemo02;

public class Test {
    public static void main(String[] args) {
        //创建对象(多态方式)
        Animal a = new Dog();
        //调编译看左边,运行也看左边
        a.eat();

        //多态的弊端
        //不能调用子类的特有功能
        //若调用子类的特有功能会报错,因为编译看左边,运行看左边
        //在编译的时候会先检查父类中有没有这个方法,如果没有直接报错
        //a.lookhome()


        //解决方案:
        //强制类型转换为子类的类型
        //细节:转换的时候不能瞎转,如果转成其他类的类型。就会报错
        // Dog c = (Dog)a;
        // c.eat();
        //Cat c = (Cat)a这样会报错

        if(a instanceof Dog){
            Dog d = (Dog)a;
            d.lookhome();
        }else if(a instanceof Cat){
            Cat c = (Cat) a;
            c.catchMouse();

        }else{
            System.out.println("没有这个类型,无法转换");
        }
    }



}

class Animal{
    String name = "动物";

    public void eat(){
        System.out.println("动物在吃东西");

    }
}

class Dog extends Animal{
    String name ="狗";

    @Override
    public void eat() {
        System.out.println("狗啃骨头");
    }

    public void lookhome(){
        System.out.println("狗在看家");
    }

}

class Cat extends Animal{
    String name ="猫";

    @Override
    public void eat() {
        System.out.println("猫吃鱼");
    }

    public void catchMouse(){
        System.out.println("猫在抓老鼠");
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值