码迷,mamicode.com
首页 > 其他好文 > 详细

重载和重写

时间:2017-12-22 23:51:55      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:另一个   父类   通过   int   return   默认   访问   .sh   oid   

1.1继承中方法重写
子类中出现与父类一模一样的方法时,会出现覆盖操作,也称为override重写、复写或者覆盖。(注意:是完全相同的)

class Fu
{
public void show()
{
System.out.println("Fu show");
}
}
class Zi extends Fu
{
//子类复写了父类的show方法
public void show()
{
System.out.println("Zi show");
}
}

  

当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法,这样,即沿袭了父类的功能,又定义了子类特有的内容。
在子类中,访问父类中的成员方法格式:
super.父类中的成员方法();

public class Test {
public static void main(String[] args) {
new NewPhone().showNum();
}
}

//手机类
class Phone{
public void sendMessage(){
System.out.println("发短信");
}
public void call(){
System.out.println("打电话");
}
public void showNum(){
System.out.println("来电显示号码");
}
}

//智能手机类
class NewPhone extends Phone{

//覆盖父类的来电显示号码功能,并增加自己的显示姓名和图片功能
public void showNum(){
//调用父类已经存在的功能使用super
super.showNum();
//增加自己特有显示姓名和图片功能
System.out.println("显示来电姓名");
System.out.println("显示头像");
}
}

  

1.2方法重写的注意事项:
?子类方法覆盖父类方法,必须要保证权限大于等于父类权限

class Fu(){	
void show(){}
public void method(){}
}
class Zi() extends Fu{
public void show(){} //编译运行没问题
void method(){} //编译错误
}	

  



写法上稍微注意:必须一模一样:函数的返回值类型 函数名 参数列表都要一样
总结:当一个类是另一个类中的一种时,可以通过继承,来继承属性与功能。如果父类具备的功能内容需要子类特殊定义时,进行方法重写。

1.3继承中子类中出现与父类重名的成员变量
当子父类中出现了同名成员变量时,在子类中若要访问父类中的成员变量,必须使用关键字super来完成。
在子类中,访问父类中的成员变量格式:
super.父类中的成员变量

class Fu
{
//Fu中的成员变量。
int num = 5;
}
class Zi extends Fu
{
//Zi中的成员变量
int num = 6;
void show()
{
//子父类中出现了同名的成员变量时
//在子类中需要访问父类中非私有成员变量时,需要使用super关键字
//访问父类中的num
System.out.println("Fu num="+super.num);
//访问子类中的num2
System.out.println("Zi num2="+this.num);
}
}
class Demo5 
{
public static void main(String[] args) 
{
Zi z = new Zi(); //创建子类对象
z.show(); //调用子类中的show方法
}
}	

  



1.4this与super调用普通成员与构造方法
?调用普通成员:
this.成员变量 可以访问本类对象的成员变量
super.成员变量 可以访问父类对象的成员变量
this.成员方法() 可以访问本类对象的成员方法
super.成员方法() 可以访问父类对象的成员方法

?调用构造方法:
this(其他参数) 可以访问本类其他的构造方法
super(其他参数) 可以访问父类其他的构造方法

?默认子类调用父类构造方法
子类的每个构造方法中均有默认的super(),调用父类的空参构造。手动调用父类构造会覆盖默认的super();

 

2.1方法重载
方法重载概述:
?在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。
方法重载特点:
?与返回值类型无关,只看方法名和参数列表
?在调用时,虚拟机通过参数列表的不同来区分同名方法
基本使用:

public class Demo01Method {
public static void main(String[] args) {
int a = 10;
int b = 20;

// 求和
int result = sum(a, b);
System.out.println("result:" + result);

int c = 30;
// 求和
result = sum(a,b,c);
System.out.println("result:"+result);
}

//两个float类型的数据求和
public static float sum(float a,float b) {
return a + b;
}

// 三个整数的求和
public static int sum(int a,int b,int c) {
return a + b + c;
}

// 两个整数的求和
public static int sum(int a, int b) {
return a + b;
}
}

  

 

重载和重写

标签:另一个   父类   通过   int   return   默认   访问   .sh   oid   

原文地址:http://www.cnblogs.com/zennon/p/8087936.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!