Java_面向对象高级一:继承、单继承、Object、方法重写

Java是单继承的,一个类只能继承一个直接父类;Java中的类不支持多继承,但支持多层继承

Object类

  • object类是java所有类的祖宗类。我们写的任何一个类,其实都是Object类的子类或子孙类

什么是方法重写?

  • 当子类觉得父类中的某个方法不好用,或者无法满足自己的需求时,子类可以重写一个方法名称、参数列表一样的方法,去覆盖父类的这个方法,这就是方法重写
  • 重写后,方法的访问,Java会遵循就近原则(优先子类,而不是父类)
  • 代码实例:
    A(父类):
package com.zzfeng.extends_override;

public class A {
    public void print1() {
        System.out.println("A");
    }

    public void print2(int a, int b) {
        System.out.println("AAA");
    }
}

B(子类):

package com.zzfeng.extends_override;

public class B extends A {
    //    方法重写
    public void print1() {
        System.out.println("B");
    }

    //    方法重写
    public void print2(int a, int b) {
        System.out.println("BBB");
    }
}

方法重写的其他注意事项

  • 重写小技巧:使用Override注释,它可以指定Java编译器,检查我们方法重写的格式是否正确,代码可读性也会更好
  • 子类重写父类方法时,访问权限必须大于或等于父类该方法的权限(publiv>protected>缺省)
  • 重写的方法返回值类型,必须与被重写方法的返回值类型一样,或者范围更小
  • 私有方法、静态方法不能被重写,如果被重写会报错
    //    方法重写
    @Override
    public void print1() {
        System.out.println("B");
    }

方法重写在开发中的常见应用场景

  • 当子类觉得父类的方法不好用,或者不满足自己的需求时,就可以用方法重写
  • 子类重写Object类的toString()方法,以便返回对象的内容
  • 代码实例:
package com.zzfeng.d12_extends_override;

public class Student {
    //    类未继承父类时默认继承Object类
    private String name;
    private int age;

//    有参构造

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }


//    无参构造器

    public Student() {
    }


//    getter、setter方法


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    //    重写toString
    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

package com.zzfeng.d12_extends_override;

public class Test {
    public static void main(String[] args) {
        B b = new B();
        b.print1();
        b.print2(1, 2);

        System.out.println("-------------");
        Student s = new Student("joker", 18);
        System.out.println(s);
//        输出时对象s会默认调用Object类的toString()方法,返回字符串形式的地址
//        重写toString()方法后返回想要的内容
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值