java面向对象编程_重载和重写
【摘要】 重载和重写 重载方法重载就是,在一个类中方法名相同,参数列表不同,返回值无关class Sum{ public int add(int a,int b){ return a+b; } public int add(int a,int b,int c){ return a+b; } public double add(double a, d...
重载和重写
重载
方法重载就是,在一个类中方法名相同,参数列表不同,返回值无关
class Sum{
public int add(int a,int b){
return a+b;
}
public int add(int a,int b,int c){
return a+b;
}
public double add(double a, double b){
return a+b;
}
}
上面add
方法构成方法重载!
重写
啥是重写呢?
重写就是子类中有父类同名的方法就构成了重写
package demo;
public class Animal{
protected String name;
protected int age;
public void eat(){
System.out.println("Animal::eat()");
}
}
class Bird extends Animal{
//和父类相同的方法
public void eat(){
System.out.println("Bird::eat()");
}
}
重写注意事项
- 方法的返回值和参数列表必须和父类相同才能构成重写
方法的返回值不同,重写失败
方法的参数不同,重写失败
方法名,返回值,参数相同,构成重写
- 重写的方法的修饰符的权限要高于或等于父类中的修饰符权限
- 重写的方法返回值类型不一定和父类的方法相同(但是建议最好写成相同, 特殊情况除外)
协变类型
就是子类重写的方法可以返回父类方法返回值的子类!!!
可以看到重写方法的返回值是父子类关系时,也能构成重写!!!
重写和重载的区别
-
方法重载指的是在一个类中同名的方法
条件:方法名相同,参数列表不同,返回值一般不做要求! -
方法重写指的是子类中的方法与父类中的方法同名,且方法的参数列表和返回值都要与父类相同!且子类重写方法的访问修饰限定符的权限要求大于或等于父类中的权限!
条件:继承关系,方法名,参数列表,返回值相同,权限高于或等于父类。 -
重载对方法的权限不做要求!
访问修饰限定符
java
中的字段和方法的四种访问权限
-
public
可以在不同包中的类访问! -
protected
不同包中继承关系访问! -
默认包访问权限,只能在同一包中的类中访问!
-
privated
只能在同一个类中访问
NO | 范围 | public | protected | default | privated |
---|---|---|---|---|---|
1 | 不同包中的非子类 | :heavy_check_mark: | |||
2 | 不同包中的子类 | :heavy_check_mark: | :heavy_check_mark: | ||
3 | 同一包中的不同类 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | |
4 | 同一包中的同一类 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)