java基础-关于继承和实现

    技术2023-10-19  108

    关于继承和实现

      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("请输入正确数字!!!"); } } }

    效果:

      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(); } }

    效果:

     
    Processed: 0.022, SQL: 9