首页 > 代码库 > 【面向对象】变量的隐藏,方法的重…(转载)
【面向对象】变量的隐藏,方法的重…(转载)
【面向对象】变量的隐藏,方法的重…
1 变量的隐藏和方法的重写(覆盖)
1)变量的隐藏:子类定义的属性的名字跟从父类中继承过来的属性名字一致,子类新定义的属性会覆盖从父类中继承来的属性。
eg: class Person{
String name = "关羽";
}
class Boss extends
Person{
String name = "关羽"; --被子类定义同名的属性给覆盖了
String name = "刘备";
}
main(){
Boss boss = new Boss();
boss.name =?-------》刘备
}
案例:
public class Demo6 {
//变量的隐藏:子类定义属性的名字跟从父类定义属性的名字相同,子类定义
//属性会覆盖从父类中继承过来的同名的属性
public static void main(String[] args){
Aoo1 aoo1 = new Aoo1();
System.out.println(aoo1.a1);
Aoo2 aoo2 = new Aoo2();
System.out.println(aoo2.a1);
}
}
class Aoo1{
int a1 = 100;
}
class Aoo2 extends Aoo1{
//继承Aoo1中的a1=100这个属性,会被子类Aoo2中新定义的属性a1=200给
//覆盖了,在Aoo2这个类当中只有a1=200
int a1 =200;
}
2)方法重写(方法覆盖):子类可以覆盖从父类继承过来的同名的方法。
a)只能在父类和子类之间出现
b)返回值类型、方法名、参数列表都必须跟父类继承过来同名方法一致
案例:
public class Demo7 {
//方法重写:父类和子类之间,子类中定义的方法会覆盖父类中定义的同名方法
public static void main(String[] args){
Eoo1 eoo1 = new Eoo1();
System.out.println(eoo1.function1(10, 10));
Eoo2 eoo2 = new Eoo2();
System.out.println(eoo2.function1(10, 10));
}
}
class Eoo1{
int function1(int num1, int num2){
return num1 num2;
}
}
class Eoo2 extends Eoo1{
//子类中 function1会覆盖父类中继承过来的同名的方法
int function1(int num1, int num2){
return num1*num2;
}
}
3)方法重载和方法重写之间的区别
a)范围
方法重载是在一个类的内部
方法重写是在父类和子类之间
b)功能
方法重载是一个类当中包含多个同名的方法,但参数不同
方法重写是子类的方法覆盖父类中的同名的方法
原文链接
本文由豆约翰博客备份专家远程一键发布
【面向对象】变量的隐藏,方法的重…(转载)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。