2021-01-17

java之多态实例一

1,解释,多态,即不同对象在引用同一个方法时产生不同的结果。多态是通过重写和重载来实现的。
2,什么是重载的?

在一个类中方法名相同,但是参数的类型和个数不相同

public class User {
public void h(int a ){

 }
 public void h(int a,int b){
	 
 }

}

方法重载实现的多态性又称静态多态性,是在编译过程中实现的

2,什么叫重写的?

重写是子类中的方法名,返回类型,参数列表与父类中的某个方法完全一致,此时称子类重写了父类的某个方法。使用super关键字可以调用父类的某些方法和成员变量。
父类 public class User {
private String userName;
public User(String name){
this.userName=name;

}
public String getName(){ 		return userName;
	
}
public void charge(){//收费
	
}

} 子类 public class MinuteUser extends User{
double unitPrice;
int minutes;
public MinuteUser(String name,double unitPrice,int minutes) { super(name);//调用父类的含参数构造方法 // TODO Auto-generated constructor stub
this.minutes=minutes; this.unitPrice=unitPrice; }
public void charge(){
System.out.println(getName()+“的水费是”+unitPrice*minutes);
}

}

3,重写和重载的区别?

方法的重写是子类和父类的关系,方法的重载是同一个类中多个方法的区别。 使用final修饰的方法是不能被重写的只能被重载


4,完整代码

public class User {
    private  String userName;
    public User(String name){
    	 this.userName=name;
    	
    }
    public String getName(){
		return userName;
    	
    }
    public void charge(){//收费
    	
    }

}
public class MinuteUser extends  User{
	    double  unitPrice;
        int   minutes;
        public MinuteUser(String name,double unitPrice,int minutes) {
		super(name);//调用父类的含参数构造方法
		// TODO Auto-generated constructor stub
		this.minutes=minutes;
		this.unitPrice=unitPrice;
	}
     public void  charge(){
    	 System.out.println(getName()+"的水费是"+unitPrice*minutes);
     }
		
	

}
public class Yearuser extends  User {
     double mCharge;
	public Yearuser(String name,double mCharge) {
		super(name);
		// TODO Auto-generated constructor stub
		this.mCharge=mCharge;
		
	}
	public void charge(){//收费
		System.out.println(getName()+"的水费是"+this.mCharge);
	    	
	    }

}
public class test_demo1 {
	public  static void main(String [] args){
	Mouse  M=new   Mouse("老鼠","垃圾");
	//Mouse   M =new  Mouse();
    M.eat();
    M.sleep();
    M.dig();
    
    System.out.println("----------------------");
    Panda P=new Panda("熊猫","竹子");
    P.eat();
    P.sleep();
    
  
}
}
public class demo {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		User  M=new MinuteUser("陈峰",0.8,30);
		User  Y=new Yearuser("老王",180);
		M.charge();
		Y.charge();
		
	}

}

5,结果显示:

陈峰的水费是24.0
老王的水费是180.0

6, 采用的含参数构造方法,在实例化的过程中注意参数问题。运行的时候,始终出现的是上一个运行结果,以前也会出现,快速的解决方案就是新建一个测试类,代码复制进去,虽然很笨的方法,但是简单粗暴

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值