爪哇的学习(方法的重写,方法的重载,构造方法的重载)

方法的重写(Override)

存在于子父类之间,子类修改从父类继承过来的方法,最终对于子类而言,该方法将表现为子类方法的表现形式

子类要重写的方法一定要与父类的方法名和参数列表完全相同

eg:

父类:(写一个叫输出的方法)

public class Father {
	public void shuchu(){
		System.out.println("woshinibaba");
	}

子类:(重写输出的方法)

public class Sun extends Father{
	public void shuchu(){
		System.out.println("nibushiwobaba");
	}

测试类:分别从父类和子类里输出这个叫输出的方法

public class test {public static void main(String[] args) {
	Father F =new Father();
	F.shuchu();
	
	
	
	System.out.println("----------------------------");
	Sun S=new Sun();
	S.shuchu();

方法的重载

在同一个类中,方法名相同,参数列表不同的这些方法,都被称之为重载(overload)

相当于是一个类中的多个方法,进行了方法名的复用

返回值不同不能构成重载

eg:

父类:定义了一个一参的名为运动的方法和一个二参的名为运动的方法。

public class Father {

        public void yundong(String youyong){
		System.out.println("youyong"); 
	}
	    public void yundong(String youyong,String daqiu){
		System.out.println("youyong" + "daqiu");
	}

}

此时父类中的两个方法构成重载。

子类:定义了一个无参的名为运动的方法

public class Sun extends Father{
        public void yundong(){
		super.yundong("ggyg","gyuyug");
		
	}
}

此时子类中这个无参的方法和从父类中继承的两个带参的方法构成重载。

构造方法

构造器可以用来初始化对象

java虚拟机会为每一个类提供一个默认的无参的构造器

如果手动编写了构造器,则java虚拟机不再提供无参构造器

如果在继承关系的两个类中,父类只定义了带参构造器,则子类如果不做任何处理,子类会发生编译报错

每个类都会直接或者间接调用父类的无参构造器

代码的第一行默认的代码为super()

如果需要强制调用父类的带参构造器,可以在子类代码的非注释第一行调用父类的带参构造器

构造方法方法名与类名完全相同

构造方法必须不能有返回值类型

构造方法的重载

参数列表不同(个数,顺序,类型)

eg:

父类:定义一个Point类,其中几种point构造方法构成重载

public class Point {
	int x;
	int y;
	int z;
	public Point(){
		System.out.println("0");
	}
	public  Point(int x){
		System.out.println("1");
		this.x=x;
	}
	public Point(int x ,int y){
		System.out.println("2");
		this.x=x;
		this.y=y;
	}
	public Point(int x ,int y,int z){
		System.out.println("3");
		this.x=x;
		this.y=y;
		this.z=z;
	}
	public void show(){
		System.out.println("(x" + x + "," + "y" + y +"," + "z" + z +")" );
	}

}

子类:其中Circle构造器为调用父类的Point构造器。show方法为继承父类的show方法

public class Circle extends Point {
	public Circle(){
		super();
		System.out.println("0");
	}
	
	public Circle(int x){
		super(x);
		System.out.println("1");
		
	}
	public Circle(int x, int y){
		super(x,y);
		System.out.println("2");
		
	}
	public Circle(int x, int y, int z){
		super(x,y,z);
		System.out.println("3");
		
	}
	public void show(){
		super.show();
	}

测试类

public class TextPoint {public static void main(String[] args) {
	Circle l =new Circle();
	l.show();
	System.out.println("-----------");
	
	Circle l1 =new Circle(5);
	l1.show();
	System.out.println("-----------");
	
	Circle l2 =new Circle(5,6);
	l2.show();
	System.out.println("-----------");
	Circle l3 =new Circle(5,6,7);
	l3.show();
	System.out.println("-----------");
	
	
	
}	
}

输出结果:

0
0
(x0,y0,z0)
-----------
1
1
(x5,y0,z0)
-----------
2
2
(x5,y6,z0)
-----------
3
3
(x5,y6,z7)
-----------

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值