zoukankan      html  css  js  c++  java
  • java语言基础之关键字2(abstract、interface、implements、instanceof)

    关键字abstract

    其特点:

    1、用abstract关键字修饰的函数时抽象函数

    2、类内有抽象函数(或抽象方法)的类为抽象类,类必须要用abstract修饰

    3、抽象类不能被实例化,也就是不能用来创建对象(new...)

    4、抽象类的子类必须覆盖实现父类中的抽象函数。也就是说abstract的类需要子类来重写方法

    5、抽象类可以有构造函数,当被继承的时候,子类会用super()调用父类的构造函数

    注意:抽象(方法、变量)不能被final或private(这样就无法继承父类了)修饰;

              抽象方法不能被static修饰,因为static修饰的方法可以直接调用类名来实例化,这当然是不可能的

    package Training;
    abstract class fu{
    	public abstract void show();
    	public  void method() {
    		System.out.println("我是构造方法!");
    	}
    }
    class Zi extends fu{
    	//super();
    	public void show() {
    		System.out.println("---------zi()-----------");
    	}
    }
    public class ABC {
         public static void main(String[] args) {
        	 Zi z = new Zi();
        	 z.show();///抽象类通过子类来实现实例化
        	 z.method();
         }
    }
    

      

    1 ---------zi()-----------
    2 我是构造方法!
    View Code

     关键字interface和implements

    接口:如果一个抽象类里面的所有方法都是抽象方法,且没有声明变量,而且接口里面所有的成员都是 public 权限的 

    用法:接口使用关键字 interface 来定义,并使用关键字 implements 来实现接口中的方法,且必须完全实现。

    接口使用规则:       

          1.类中全部为抽象方法。

          2.抽象方法钱不用加abstract。

          3.接口抽象方法属性为public。

          4.成员属性必须为常量。

     接口与继承的区别:继承(extends)是单一性的,只能单单继承一个父类,而接口使用关键字 implements 多个引用并用逗号分开(引用多个interface修饰的类)

    接口各种用法:

    1.普通类引用接口
    
    class Zi implements Fu1,Fu2,.....{
    	...
    }
    
    2.抽象类应用接口
    
    与1同理,但在class前加abstract
    
    3.继承父类引用接口
    
    class Zi extends Fu implements Fu1,Fu2,...{
    	...
    }
    
    4.接口与接口的继承
    interface Fu1 extends Fu2{
    	...
    }
    
    Fu1,Fu2都为接口

    接口与抽象类的区别:

          1.一个子类如果 implements 一个接口,就必须实现接口中的所有方法(不管是否需要);如果是继承一个抽象类,只需要实现需要的方法即可。

          2.如果一个接口中定义的方法名改变了,那么所有实现此接口的子类需要同步更新方法名;而抽象类中如果方法名改变了,其子类对应的方法名将不受影响,只是变成了一个新的方法而已(相对老的方法实现)。

          3.抽象类只能单继承,当一个子类需要实现的功能需要继承自多个父类时,就必须使用接口。

    关键字instanceof

    特点:

    1、instanceof关键字是在Java类中实现equals方法最常使用的关键字,表示其左边的对象是否是右边类型的实例,这里右边的类型可以扩展到继承、实现结构中,可以是其真实类型,或者真实类型的超类型、超接口类型等。

    2、instanceof左边必须是对象实例或者null类型,否则无法通过编译。

    3、instanceof右边必须是左边对象的可转换类型(可强转),否则无法通过编译。

    4、instanceof 是 Java 的一个二元操作符,类似于 ==,>,< 等操作符。

    5、instanceof左边必须为引用类型,不能为基本数据类型(如int、double、。。。)。

    package Training;
    
    class Fu{
    	
    }
    class Zi extends Fu{
    	
    }
    
    //接口类
    interface  A{
    	
    }
    interface B{
    	
    }
    class C extends Fu implements A,B{
    	
    }
    
    public class atect {
         public static void main(String [] args) {
        	 Fu f1 = new Fu();
        	 Fu f2 = new Zi();
        	 Zi z = new Zi();
        	 System.out.println(f1 instanceof Zi);//false
        	 System.out.println(f2 instanceof Zi);//true
        	 System.out.println(z instanceof Zi);//true
        	 System.out.println(null instanceof Fu);//false
        	 
        	 System.out.println("------不疯狂就不优秀------");
        	 C c = new C();
        	 System.out.println(c instanceof A);///true
        	 A a = new C();
        	 System.out.println(a instanceof C);//true
         }
    }
    

      

    参考资料:https://blog.csdn.net/xnh_565175944/article/details/79896232

                      https://blog.csdn.net/weixin_40096176/article/details/79094991

                      https://www.jb51.net/article/116180.htm

                      https://blog.csdn.net/DYD850804/article/details/81097776

                      http://www.51ui.cn/66/4306186/

    不忘初心,方得始终。只有走过弯路,才更确信当初最想要的是什么。
  • 相关阅读:
    OK335xS 网络连接打印信息 hacking
    OK335xS mac address hacking
    buildroot linux filesystem 初探
    busybox filesystem matrix-gui-2.0 undefined function json_encode()
    RPi 2B Documentation
    RPi 2B Raspbian SD卡内部架构
    Error building results for action sayHello in namespace /inteceptor
    linux 失败无连接 检查电缆吗
    Struts2
    struts2加入自定义的actionValidatorManager实现类
  • 原文地址:https://www.cnblogs.com/wszhu/p/10708815.html
Copyright © 2011-2022 走看看