首页 > 代码库 > 【面向对象】变量的隐藏,方法的重…(转载)

【面向对象】变量的隐藏,方法的重…(转载)

【面向对象】变量的隐藏,方法的重…

 

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)功能
   
 方法重载是一个类当中包含多个同名的方法,但参数不同
     
     
     
  方法重写是子类的方法覆盖父类中的同名的方法
原文链接
本文由豆约翰博客备份专家远程一键发布

【面向对象】变量的隐藏,方法的重…(转载)