java基础-关于继承和实现

关于继承和实现

 
1、java中为什么要单继承多实现
 
若为 多继承,那么当多个父类中 有重复的属性或者方法时,子类的 调用结果会 含糊不清,因此用了 单继承
 
实现接口的作用:通过实现接口来 拓展了类的功能,

 
2、为什么接口中所有的属性都是public static final修饰的
 
public : 使接口的实现类可以使用这个常量
 
static  : static修饰就表示它 属于类的,随着类的加载而存在的,如果是非static的话,
            就表示属于对象的,只有建立对象时才有它,而 接口是不能建立对象的,所以
            接口的常量必须是static
 
final   : final修饰就是保证接口中定义的常量 不能被实现类所修改,如果没有final的话,由字类随意的进行修改的话,
            那么接口建立这个常量就没有意义了。

3、继承和实现的区别
 
继承  :  如果多个类的 某个部分的功能相同,那么可以抽象出一个类出来,
            并把他们 相同的部分放进这个抽象类中,让他们都继承这个类。
 
实现  : 如果多个类 处理的目标是一样的,但是 处理的方式不同,那么就 定义一个接口,也就是一个标准,之后让他们实现这个接口,
           各自实现自己具体的处理方法来处理那个目标
 
4、继承是什么,实现是什么
 
继承大白话可以把抽象类看成一个公用的模板,继承抽象类的子类目的是实现这个模板,比方说,抽象类有个叫声的抽象方法,那该方法为模板,而继承这个模板的方法可以有很多,比如喵喵(猫叫),吱吱(老鼠叫)等等。
实现的作用可以看成添加功能
 
利用继承和实现实现一个银行的实例:
 
interface Overdraft              //透支限制
{                     
	void show();
}
abstract class Account
{  
	String ID;
	double rate;
	//double balance;
	abstract void bankAccountNumber();
	abstract double  getMoney(double a );              //取款
	abstract double setMoney(double a);               //存款
	abstract double yue();
}
class Debit  extends Account               //借记卡
{
	double balance=10000;
	
	void bankAccountNumber() 
	{
	      ID ="45387874385793384";
		   rate = 0.54;
	    System.out.println("借记卡账号:"+ID);
	    System.out.println("借记卡利率:"+rate);
	    System.out.println("余额:"+balance);
	}
	double getMoney(double a)     //借记卡取款
	{
		if (a<=10000) {
			balance = balance -a;
			System.out.println("操作已取出!:借记卡余额:"+balance);
			
		}else{
			System.out.println("抱歉!!:借记卡余额不足!!!");
		}
		return balance;		
	}
	double setMoney(double a) {             //借记卡存款		
		  balance = balance +a;
			return balance;
	}
    public double yue(){
		double sum =balance;
		System.out.println("操作已成功!!!");
		System.out.println("现余额:"+sum);
	  return sum;
	}
}
class DC  extends Account   implements Overdraft               //信用卡
{
	double balance = 5000000;
	void bankAccountNumber()
	{
		 ID ="584946413bdfdf58";
		 rate = 0.74;
		 System.out.println("信用卡账号:"+ID);
	    System.out.println("信用卡利率:"+rate);
	}
	double getMoney(double a)                   //信用卡取款
	{
		balance = 5000000 - a;
		
			return balance;
	}
          public  double yue()
          {
        	 double sum =balance;
      		System.out.println("操作已成功!!!");
      		System.out.println("现余额:"+sum);
      	    return sum;
           }
	double setMoney(double a) {                    //信用卡存款数
		balance = 5000000;
			return balance;
	}

	public void show() {                                          //  透支限制
		System.out.println("是否查看此卡的透支限度!");
		System.out.println("是 :输入-1          否: 其他数字");
		Scanner s =new Scanner(System.in);
		if (s.nextInt() == -1) {
			System.out.println("信用卡透支数:5000000")  ; 
			System.out.println("是否取款:");
			System.out.println("是(Yes):输入-1              否(No):输入-2");
			Scanner sw  = new Scanner(System.in);
	          switch (sw.nextInt()) {
			case -1:
				System.out.println("请输入取款金额:");
				Scanner sca = new Scanner(System.in);
				double sss = sca.nextDouble();
				getMoney(sss);
				yue();
				break;
		     case -2:
		    	System.out.println("系统已关闭");		
				break;
			default:
				System.out.println("请输入正确数字!!!");
				break;
			}
		}else {
			System.out.println("是否取款!");
			System.out.println("是 :输入-1          否: 其他数字");
			Scanner sz =new Scanner(System.in);
	        if (sz.nextInt()==-1) {
	        	System.out.println("输入取款金额:");
	        	Scanner sq =new Scanner(System.in);
				getMoney(sq.nextInt());
				yue();
			}else{
				System.out.println("系统已关闭!!!");
			}			
		}          	
	}	
}
public class Work06银行¥ 
{
	static
	{   
	System.out.println("欢迎进入银行查询!!!");
	System.out.println("");
	}
public static void main(String[] args)
{
        DC   dc = new DC();                          //信用卡
        Debit  debit = new Debit();               //借记卡
        System.out.println("请选择借记卡/信用卡:");
    	System.out.println("选择借记卡:输入-1");
    	System.out.println("选择信用卡:输入-2");
		Scanner sc = new Scanner(System.in);
		int g = sc.nextInt();
		
			if (g==-1) 
			{
				System.out.println("欢迎进入借记卡操作页面:");
				System.out.println("");
				debit.bankAccountNumber();
				System.out.println("是否存取款:");
				System.out.println("存款:输入-1                    取款:输入-2");
				Scanner s  = new Scanner(System.in);
	          switch (s.nextInt()) {
			case -1:
				System.out.println("请输入存款金额:");
				Scanner sca = new Scanner(System.in);
				double sss = sca.nextDouble();
				debit.setMoney(sss);
				debit.yue();
				break;
		     case -2:
		    	 System.out.println("请输入取款金额:");
				Scanner sa = new Scanner(System.in);
				double ss = sa.nextDouble();
				debit.getMoney(ss);		
				break;
			default:
				System.out.println("请输入正确数字!!!");
				break ;
			}	
			}else if(g == -2)
			{
				System.out.println("欢迎进入信用卡操作页面:");
				System.out.println("");
				dc.bankAccountNumber();
				dc.show();		
			
			}else{
				System.out.println("请输入正确数字!!!");
			}
}
}

效果:

  java基础-关于继承和实现_第1张图片
java基础-关于继承和实现_第2张图片
5、default 接口默认方法(JAVA8)
 
好处: 打破了Java之前版本对接口的语法限制
修饰符的权限:
private > default > protected > public
 
public interface Interface1{ 
default void helloWorld() {
System.out.println("hi i'm from Interface1");
}
}

/**
* 实现接口Interface1
*/
public class MyImplement implements Interface1{
    public static void main(String[] args) {
        MyImplement myImplement = new MyImplement();
        //直接调用helloWorld()方法
        myImplement.helloWorld();
    }
}

效果:

java基础-关于继承和实现_第3张图片

 

你可能感兴趣的:(JAVA)