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

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

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)功能

方法重载是一个类当中包含多个同名的方法,但参数不同

方法重写是子类的方法覆盖父类中的同名的方法

原文链接

本文由豆约翰博客备份专家远程一键发布

时间: 2024-08-04 22:15:02

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

java 子类继承父类成员变量的隐藏、实现方法的重写

成员变量的隐藏和方法的重写 Goods.java public class Goods { public double weight; public void oldSetWeight(double w) { weight=w; System.out.println("double型的weight="+weight); } public double oldGetPrice() { double price = weight*10; return price; } } CheapGoo

成员变量的隐藏,方法的覆盖,super关键字

成员变量的隐藏:当父类和子类有相同的成员变量时,即定义了与父类相同的成员变量时,就会发生子类对父类变量的隐藏.对于子类的对象来说,父类中的同名成员变量被隐藏起来,子类就会优先使用自己的成员变量,父类成员隐藏. public class yincang {public static void main(String []args){ SonA son=new SonA(); son.showson(); FatherA father=new FatherA(); father.showfather

定义c/c++全局变量/常量几种方法的区别(转载)

出自:http://www.cnblogs.com/yaozhongxiao/archive/2010/08/08/1795338.html 在讨论全局变量之前我们先要明白几个基本的概念:  1. 编译单元(模块): 在ide开发工具大行其道的今天,对于编译的一些概念很多人已经不再清楚了,很多程序员最怕的就是处理连接错误 (link error)  因为它不像编译错误那样可以给出你程序错误的具体位置,你常常对这种错误感到懊恼,但是如果你经常使用 gcc,makefile等工具在linux或者嵌入

第二讲、实例变量可见度、方法

一.实例变量可见度 可见度         特点 public          实例变量可以在类的外部和内部操作 protected    实例变量只能在该类和其子类内操作     默认 private        实例变量只能在该类内访问 内部:相应类的@implementation和@end之间 @interface Person : NSObject { @public NSString*_name; @protected NSString*_gender; int_age; //年龄

Java 面向对象 的属性 和 方法 的使用 (Java 学习中的小记录)

Java 面向对象 的属性  和 方法 的使用        作者:王可利(Star·星星) //car 的属性方法 class Car { //属性 格式:数据类型 变量名 String color; String name; int wheelNumber; public void run(){ System.out.println("run 的方法 汽车启动了~"); } } //主函数的方法 class Star1 { public static void main(Strin

黑色产业链-最明智的网站链接隐藏方法

黑色产业链可以称为隐藏链.顾名思义.它没有在链接显示,该搜索引擎可以看到链接,黑色短链优势,能够迅速提高排名. 黑色产业链属于外部链接,可以点添加网站链接地址PR值.这是一个受欢迎的网站权重.这就是为什么有些SEOer我喜欢买黑链的原因.以下我们就谈一谈挂黑链的几种方法. 第一种 CSS.DIV隐藏链接代码 黑链代码1.<div style="position: absolute; top: -999px; left: -999px;"> <a href="

PHP魔术变量和魔术方法

基础知识:魔术变量和魔术方法 魔术变量:最初PHP魔术变量的出现主要是为了方便开发者调试PHP的代码;当然也可以利用这个实现特殊需求.在写法上魔术变量前后都有两个下划线. 如:_LINE_:返回文件中的当前行号,我们在定位错误的时候经常用到. 魔术方法:主要是随着PHP的面向对象特性出现的(出就是PHP5之后),主要解决的是PHP在面向对象的思想中所遇到的一些特殊情况.魔术方法使用两个下划线开头.所有的魔术方法都需要给予public属性. 如:__construct():通用的类构造函数. PH

函数中的私有变量和特权方法

定义 [1][私有变量] 任何在函数中定义的变量,都可以认为是私有变量,因为不能在函数外部访问这些变量.私有变量包括函数的参数.局部变量和在函数内部定义的其他函数 [2][特权方法] 如果在函数内部创建一个闭包,那么闭包通过自己的作用域链也可以访问这些变量.而利用这一点,就可以创建用于访问私有变量的公有方法.有权访问私有变量和私有函数的公有方法称为特权方法. 创建方式 [1][构造函数] 在构造函数内部定义所有私有变量和函数.然后,创建能够访问这些私有成员的特权方法.能够在构造函数中定义特权方法

Java Reflection(七):私有变量和私有方法

转载自并发编程网 – ifeve.com 内容索引访问私有变量访问私有方法 在通常的观点中从对象的外部访问私有变量以及方法是不允许的,但是Java反射机制可以做到这一点.使用这个功能并不困难,在进行单元测试时这个功能非常有效.本节会向你展示如何使用这个功能. 注意:这个功能只有在代码运行在单机Java应用(standalone Java application)中才会有效,就像你做单元测试或者一些常规的应用程序一样.如果你在Java Applet中使用这个功能,那么你就要想办法去应付Securi