java总结之 类的继承

         要想更好的使用类的继承,我们首先要知道为什么要使用累得继承,笔者做如下感想:

         继承是面向对象编程技术的一块基石,因为它允许创建分等级层次的类。运用继承,你能够创建一个通用类,它定义了一系列相关项目的一般特性。该类可以被更具体的类继承,每个具体的类都增加一些自己特有的东西。在Java 术语学中,被继承的类叫父类,继承超类的类叫子类。因此,子类继承了父类定义的所有实例变量和方法,并且为它自己增添了独特的元素。

       继承的关键字:extends,基本格式为

public class 类名(子类,超类,派生类) extends 类名(父类,基类) {}

       而子类能继承到了父类的哪些属性和方法

子类继承到了父类所有的属性和方法(public,protected,private,默认的)。

1.子类和父类在同一个包下,能调用的方法和属性:

只有私有的属性和方法不能在子类中和子类的对象调用。

2.子类和父类不同包,能调用的属性和方法:

子类中:  公有的,受保护的属性和方法

子类的对象:公有的属性和方法

而在继承关系中方法重写是经常被使用的!

方法重写的条件为:

1.必须要存在继承关系

2.返回值数据类型 ,方法名,参数个数,参数类型,参数顺序必须要和父类的完全一致。

3.子类重写方法的访问修饰符可以大于或者等于父类方法的访问修饰符。

优先调用子类的方法,如果子类没有,则调用父类的。

而我们一定要弄清楚为什么要使用方法重写

因为在面向对象中,一个子类可以自动继承父类子类可见的方法,子类不用自己定义。但是有时候,有的子类在某些行为上有自己的特殊性,这时候在子类中就可能重写父类中的某些方法,来实现所谓的多态性。也就是说调用时,将调用子类重写的方法,而不是父类的方法。

 

关于继承和方法重写,笔者在这学期期末的时候做过一个课程设计用到过简单的类的继承,实现的是飞机票的预定、退订功能,飞机航班的输入以及查询功能,本来想在界面中来实现所有功能,无奈时间不够充裕最后放弃了,只能放弃界面,现附上代码如下!

package com.my;

import java.util.*;

public class Feijichang{
	
public static Scanner scan = new Scanner(System.in);

public static void main(String[] args){
	
	IFangfa If = new Fangfa();
	
	while(true){
	
	 Display();
		
	int i = scan.nextInt();
	
	switch(i){
		
		case 1: If.InputFly();
		break;
		
		case 2:If.DisplayFly();
		break;
		
		case 3:If.LookFly();
		break;
		
		case 4:If.SellTicket();
		break;
		
		case 5:If.changeFly();
		break;
		
		case 6: System.exit(0);
		break;
	}
	
	}
}

public static void Display(){
	System.out.println("*************************************************************************");
	
	System.out.println(")\t\t\t\t\t\t\t\t\t(");
	System.out.println("(\t\t\t\t飞机订票系统\t\t\t\t)");
	System.out.println(")\t\t\t\t\t\t\t\t\t(");
	
	System.out.println("*************************************************************************");
	System.out.println();	
	System.out.println("*************************************************************************");
	System.out.println("(\t\t\t\t\t\t\t\t\t)");
	System.out.println(")\t\t\t\t1.录入班次信息\t\t\t\t(");
	System.out.println("(\t\t\t\t2.浏览班次信息\t\t\t\t)");
	System.out.println(")\t\t\t\t3.查询路线        \t\t\t\t(");
	System.out.println("(\t\t\t\t4.售票和退票    \t\t\t\t)");
	System.out.println(")\t\t\t\t5.修改航班信息\t\t\t\t(");
    System.out.println("(\t\t\t\t6.退出                \t\t\t\t)");
    System.out.println(")\t\t\t\t\t\t\t\t\t(");
    System.out.println("*************************************************************************");
    
    System.out.println("请选择操作:");
}
}

 

package com.my;

public interface IFangfa{
	
	public void InputFly();
	
	public void DisplayFly();
	
	public void LookFly();
	
	public void SellTicket();
	
	public void changeFly();
}

 

package com.my;

public class PeoMessage{
	
	private String PeoName;
	private int FjNum;
	private int TkNum;
	
	public PeoMessage(String PeoName,int FjNum,int TkNum){
		
		this.PeoName=PeoName;
		this.FjNum=FjNum;
		this.TkNum=TkNum;
	} 
	public PeoMessage(){
		
	}
	
	public void SetPeoName(String PeoName){
		
		this.PeoName=PeoName;
	}
	public String GetPeoName(){
		
		return this.PeoName;
	}
	
	public void SetFjNum(int FjNum){
		
		this.FjNum=FjNum;
	}
	
	public int GetFjNum(){
		
		return this.FjNum;
	}
	
	public void SetTkNum(int TkNum){
		
		this.TkNum=TkNum;
	}
	
	public int GetTkNum(){
		
		return this.TkNum;
	}
	
	public String toString(){
		
		return GetPeoName()+"  "+GetFjNum()+"  "+GetTkNum();
	}
}

 

package com.my;

import com.my.*;

import java.util.*;

import java.text.SimpleDateFormat;

public class PlanMessage{
	
	private int FeijiNum;
    private String StrTime;
	private String StrAddress;
	private String OverAddress;
	private String TakeTime;
	private int PeoNum;
	private int TickNum;
	
	public PlanMessage(int FeijiNum, String StrTime,String StrAddress,String OverAddress,String TakeTime,int PeoNum,int TickNum){
		
		this.FeijiNum=FeijiNum;
		this.StrTime=StrTime;
		this.StrAddress=StrAddress;
		this.OverAddress=OverAddress;
		this.TakeTime=TakeTime;
		this.PeoNum=PeoNum;
		this.TickNum=TickNum;
	}
	
	public PlanMessage(){
		
	}
	
	public void SetFeijiNum(int FeijiNum){
		
		this.FeijiNum=FeijiNum;
	}
	
	public int GetFeijiNum(){
		
		return this.FeijiNum;
	}
	
	public void SetStrTime(String StrTime){
		
		this.StrTime=StrTime;
	}
	
	public String GetStrTime(){
		
		return this.StrTime;
	}
	
	public void SetStrAddress(String StrAddress){
		
		this.StrAddress=StrAddress;
	}
	
	public String GetStrAddress(){
		
		return this.StrAddress;
	}
	
	public void SetOverAddress(String OverAddress){
		
		this.OverAddress=OverAddress;
	}
	
	public String GetOverAddress(){
		
		return this.OverAddress;
	}
	
	public void SetTaketime(String TakeTime){
		
		this.TakeTime=TakeTime;
	}
	
	public String GetTakeTime(){
		
		return this.TakeTime;
	}
	
	public void SetPeoNum(int PeoNum){
	
	    this.PeoNum=PeoNum;
	}
	
	public int GetPeoNum(){
		
		return this.PeoNum;
	}
	
	public void SetTickNum(int TickNum){
		
		this.TickNum=TickNum;
	}
	
	public int GetTickNum(){
		
		return this.TickNum;
	}
	
	public String toString (){
		
		try{
		
		SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
     	
     	Date date = sdf.parse(GetStrTime());
     	
     	Date d = new Date();
     	
     	boolean b = d.after(date);
     	
		if(d.after(date)){
		
		return GetStrTime()+" \t"+GetStrAddress()+" \t"+GetOverAddress()+"\t "+GetTakeTime()+"\t   "+GetPeoNum()+"\t     "+GetTickNum() ;
	
	}
	   else{
		
		return "已出发"+" \t"+GetStrAddress()+" \t"+GetOverAddress()+"\t "+GetTakeTime()+"\t   "+GetPeoNum()+"\t     "+GetTickNum() ;
	}

	}catch(Exception ex){
        
         System.out.println(ex);
	}
		
	
	return null;
	
	} 
	
}

 

package com.my;
import java.util.*;
import com.my.*;
import java.lang.*;


public class Fangfa implements IFangfa{
	
	Scanner sc = new Scanner(System.in);
	
	 List<Object> list = new ArrayList<Object>();
	 
	 List<Object> li = new ArrayList<Object>();
	 
      public Fangfa(){
           
 	
  }
	
	public void InputFly(){
		
		System.out.println("请输入航班班次:");
		
		int FeijiNum=sc.nextInt();
		
		System.out.println("请输入起飞时间:");
		
		String StrTime = sc.next();
		
		System.out.println("请输入起始站:");
		
		String StrAddress = sc.next();
		
		System.out.println("请输入终点站:");
		
		String OverAddress = sc.next();
		
		System.out.println("请输入飞行时间:");
		
		String TakeTime = sc.next();
		
		System.out.println("请输入额定载量:");
		
		int PeoNum =sc.nextInt();
		
		System.out.println("请输入已订票人数:");
		
		int TickNum = sc.nextInt();
		
		PlanMessage pl = new PlanMessage(FeijiNum,StrTime,StrAddress,OverAddress,TakeTime,PeoNum,TickNum);
		
        
        list.add(pl);
		
		System.out.println("录入成功");
		
		System.out.println("已存入:"+list.size());
		
		
	}
	
    public  void DisplayFly(){
    	
    	System.out.println("班次  "+"起飞时间  "+"起点站  "+"终点站  "+"飞行时间  "+"额定载量  "+"已订票人数");
        
	    for(int i=0;i<list.size();i++){
	    
	    System.out.println(i+1+"      "+list.get(i));
	}
	
	}
	
	public void LookFly(){
		
		System.out.println("1.按班次查询");
		System.out.println("2.按终点站查询");
		int j = sc.nextInt();
		switch(j){
			
			case 1:System.out.println("请输入要查询的班次:");
			   
			   int n = sc.nextInt();
			   
			   System.out.println("班次  "+"起飞时间  "+"起点站  "+"终点站  "+"飞行时间  "+"额定载量  "+"已订票人数");
         
			   System.out.println(n+"\t"+list.get(n-1));
			
			break;
			
			case 2:System.out.println("请输入要查询的终点站:");
			
			   String zd = sc.next();
			   
			   int l=0;
			   
			   for(int i=0;i<list.size();i++){
			   	
			   PlanMessage p = new PlanMessage();
			   	
			   p=(PlanMessage)list.get(i);
			   
			   if(zd.equals(p.GetOverAddress())){
			   	
			    System.out.println("班次  "+"起飞时间  "+"起点站  "+"终点站  "+"飞行时间  "+"额定载量  "+"已订票人数");
			   	System.out.println(i+1+"\t"+list.get(i));

			   }else{
			   	
			   	l++;
			   }
			   
			   if(l==list.size()){
			   	System.out.println("没有此航班");
			   }
			   
			   }
			
			break;
		}
		
		
		
	}
	
	public void SellTicket(){
		
		System.out.println("1.售票");
		System.out.println("2.退票");
		
	   int m=sc.nextInt();
	   switch(m){
	   	
	   	case 1:
	   	System.out.println("请输入要购票的班次:");
	   	int num = sc.nextInt();
	   	System.out.println("请输入要订票数量:");
	   	int g= sc.nextInt();
	   	PlanMessage s = new PlanMessage();
	  
	   	s=(PlanMessage)list.get(num-1);
	   	
	   	
	   	if(g>s.GetPeoNum()-s.GetTickNum()){
	   		
	   		System.out.println("余票不足,您是否需要预约");
	   		
	   	    System.out.println("1.是\t\t2.不是");
	   		
	   		int c = sc.nextInt();
	   		
	   		
	   		switch(c){
	   			case 1:System.out.println("请登记您的信息:");
	   			
	   			System.out.println("请输入您的姓名:");
	   			String PeoNum = sc.next();
	   			System.out.println("请输入您预定的航班号:");
	   			int FjNum = sc.nextInt();
	   			System.out.println("请输入您的预定票数:");
	   			int TkNum = sc.nextInt();
	   			
	   			PeoMessage peo =new PeoMessage(PeoNum,FjNum,TkNum);
	   			
	   			li.add(peo);
	   			
	   			System.out.println("预约成功");
	   			break;
	   			case 2:
	   			break;
	   		}
	   		;
	   	
	   	}
	   	else{
	   	s.SetTickNum(s.GetTickNum()+g);
	   	System.out.println("班次  "+"起飞时间  "+"起点站  "+"终点站  "+"飞行时间  "+"额定载量  "+"已订票人数");
         
	    System.out.println(num+"\t"+list.get(num-1));
	    
	    Random rand = new Random();
	   
	    
	    System.out.println("您的座位号是:");
	    
	    for(int v=0;v<g;v++){
	    
	    int r = rand.nextInt(s.GetPeoNum())+1;
	    
	    System.out.println(r+"\t");
	    
	    }
	    
	    s.SetTickNum(s.GetTickNum()-g);
	    
	    list.set(num-1,s);
	    
	    }
	   	break;
	   	
	   	
	   	
	   	
	   	case 2:System.out.println("请输入要退票的班次:");
	   	int feijinum = sc.nextInt();
	   	
        PlanMessage pm = new PlanMessage();
			   	
	    pm=(PlanMessage)list.get(feijinum-1);
	    
		int f =pm.GetTickNum();
		 
		pm.SetTickNum(f-1);
		 
		list.set(feijinum-1,pm);
		 
		System.out.println(feijinum+"    "+list.get(feijinum-1));
		 
	   	System.out.println("退票成功");
	   	
	   	PeoMessage ps = new PeoMessage();
	   	
        for(int i=0;i<li.size();i++){
        	
            ps = (PeoMessage)li.get(i);
            
            if(ps.GetFjNum()==pm.GetFeijiNum()){
            
            
            if(ps.GetTkNum()<=pm.GetPeoNum()-pm.GetTickNum()){
            	
            	System.out.println("此航班"+i+1+"号预约者订票成功,座位号是:");
            	
            	Random ran = new Random();
                
                for(int v=0;v<ps.GetTkNum();v++){
	    
	            int a = ran.nextInt(pm.GetPeoNum())+1;
	    
	            System.out.print(a+"\t");
	    
	        }
	         pm.SetTickNum(pm.GetTickNum()-ps.GetTkNum());
	         
	         list.set(feijinum-1,pm);
	         
	        
	    }
            	
            }
        	
        }
	   	
	   	break;
	   }	
	}
	
	public void changeFly(){
		
		System.out.println("请输入要修改的班次:");
		
		int k = sc.nextInt();
		
		System.out.println("请输入新的航班信息:");
		
			
		System.out.println("请输入新班次:");
		
		int NewFeijiNum=sc.nextInt();
		
		System.out.println("请输入新起飞时间:");
		
		String NewStrTime = sc.next();
		
		System.out.println("请输入新起始站:");
		
		String NewStrAddress = sc.next();
		
		System.out.println("请输入新终点站:");
		
		String NewOverAddress = sc.next();
		
		System.out.println("请输入新飞行时间:");
		
		String NewTakeTime = sc.next();
		
		System.out.println("请输入新额定数量:");
		
		int NewPeoNum =sc.nextInt();
		
	    System.out.println("请输入新已订票人数:");
	    
	    int NewTickNum = sc.nextInt();
		
	    PlanMessage pm= new PlanMessage(NewFeijiNum,NewStrTime,NewStrAddress,NewOverAddress,NewTakeTime,NewPeoNum,NewTickNum);
		
	    list.set(k-1,pm);
	    
	    System.out.println("修改成功");
		
		}
}

 

 

 

你可能感兴趣的:(累得继承 、飞机票查询系统!)