日期: 2022-09-20 13:21:12 浏览数:6

上往建站提供服务器空间服务商,百度快照排名,网站托管,百度推广运营,致力于设计外包服务与源代码定制开发,360推广,搜狗推广,增加网站的能见度及访问量提升网络营销的效果,主营:网站公司,百度推广公司电话,官网搭建服务,网站服务企业排名,服务器空间,英文域名等业务,专业团队服务,效果好。
张家界小程序制作【张家界企业邮箱】张家界网站外包、张家界微信商城开发、张家界网店美工、张家界淘宝设计
张家界,原名“大庸市”,湖南省地级市。辖2个市辖区(永定区、武陵源区)、2个县(慈利县、桑植县)。位于湖南西北部,澧水中上游,属武陵山区腹地。 [1] 张家界因旅游建市,是中国最重要的旅游城市之一,是湘鄂渝黔革命根据地的发源地和中心区域。
1982年9月,张家界国家森林公园成为中国第一个国家森林公园。
1988年8月,张家界武陵源风景名胜区被列入国家重点风景名胜区;1992年,由张家界国家森林公园等三大景区构成的武陵源风景名胜区被联合国教科文组织列入《世界自然遗产名录》;2004年2月,被列入全球首批《世界地质公园》;2007年,被列入中国首批国家5A级旅游景区。 [2] 2017年,被授予“国家森林城市”荣誉称号。 [3] 2021年1月29日,入选湖南省人民政府公布的2020年度真抓实干成效明显的地区名单。
如果子类方法完全与父类方法相同,即:相同的方法名、相同的参数列表和相同的返回值,只是方法体不同,这称为子类覆盖(Override)父类方法。
示例代码如下:
//ParentClass.java文件package com.a51work6;class ParentClass {
// x成员变量
int x;
protected void setValue() { ①
x = 10;
}}class SubClass extends ParentClass {
// 屏蔽父类x成员变量
int x;
@Override
public void setValue() { // 覆盖父类方法 ②
// 访问子类对象x成员变量
x = 20;
// 调用父类setValue()方法
super.setValue();
}
public void print() {
// 访问子类对象x成员变量
System.out.println("x = " + x);
// 访问父类x成员变量
System.out.println("super.x = " + super.x);
}}复制代码调用代码如下:
//HelloWorld.java文件package com.a51work6;public class HelloWorld {
public static void main(String[] args) {
//实例化子类SubClass
SubClass pObj = new SubClass();
//调用setValue方法
pObj.setValue();
//调用子类print方法
pObj.print();
}}复制代码运行结果如下:
x = 20super.x = 10复制代码
上述代码第①行是在ParentClass类声明setValue方法,那么在它的子类SubClass代码第②行覆盖父类中的setValue方法,在声明方法时添加@Override注解,@Override注解不是方法覆盖必须的,它只是锦上添花,但添加@Override注解有两个好处:
提高程序的可读性。
编译器检查@Override注解的方法在父类中是否存在,如果不存在则报错。
注意 方法覆盖时应遵循的原则:
覆盖后的方法不能比原方法有更严格的访问控制(可以相同)。例如将代码第②行访问控制public修改private,那么会发生编译错误,因为父类原方法是protected。
覆盖后的方法不能比原方法产生更多的异常。
在面向对象程序设计中多态是一个非常重要的特性,理解多态有利于进行面向对象的分析与设计。
发生多态要有三个前提条件:
继承。多态发生一定要子类和父类之间。
覆盖。子类覆盖了父类的方法。
声明的变量类型是父类类型,但实例则指向子类实例。
下面通过一个示例理解什么多态。如图12-5所示,父类Figure(几何图形)类有一个onDraw(绘图)方法,Figure(几何图形)它有两个子类Ellipse(椭圆形)和Triangle(三角形),Ellipse和Triangle覆盖onDraw方法。Ellipse和Triangle都有onDraw方法,但具体实现的方式不同。

图12-5 几何图形类图
具体代码如下:
//Figure.java文件package com.a51work6;public class Figure {
//绘制几何图形方法
public void onDraw() {
System.out.println("绘制Figure...");
}}//Ellipse.java文件package com.a51work6;//几何图形椭圆形public class Ellipse extends Figure {
//绘制几何图形方法
@Override
public void onDraw() {
System.out.println("绘制椭圆形...");
}}//Triangle.java文件package com.a51work6;//几何图形三角形public class Triangle extends Figure {
// 绘制几何图形方法
@Override
public void onDraw() {
System.out.println("绘制三角形...");
}}复制代码调用代码如下:
//HelloWorld.java文件package com.a51work6;public class HelloWorld {
public static void main(String[] args) {
// f1变量是父类类型,指向父类实例
Figure f1 = new Figure(); ①
f1.onDraw();
//f2变量是父类类型,指向子类实例,发生多态
Figure f2 = new Triangle(); ②
f2.onDraw();
//f3变量是父类类型,指向子类实例,发生多态
Figure f3 = new Ellipse(); ③
f3.onDraw();
//f4变量是子类类型,指向子类实例
Triangle f4 = new Triangle(); ④
f4.onDraw();
}}复制代码上述带代码第②行和第③行是符合多态的三个前提,因此会发生多态。而代码第①行和第④行都不符合,没有发生多态。
运行结果如下:
绘制Figure...绘制三角形...绘制椭圆形...绘制三角形...复制代码
从运行结果可知,多态发生时,Java虚拟机运行时根据引用变量指向的实例调用它的方法,而不是根据引用变量的类型调用。
张家界小程序制作【张家界企业邮箱】张家界网站外包、张家界微信商城开发、张家界网店美工、张家界淘宝设计
上往建站提供搭建网站,域名注册,官网备案服务,网店详情页设计,企业网店,专业网络店铺管理运营全托管公司咨询电话,服务器空间,微信公众号托管,网页美工排版,致力于域名申请,竞价托管,软文推广,全网营销,提供标准级专业技术保障,了却后顾之忧,主营:虚拟主机,网站推广,百度竞价托管,网站建设,上网建站推广服务,网络公司有哪些等业务,专业团队服务,效果好。
服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)