zoukankan      html  css  js  c++  java
  • 关键字(final,static),抽象类,接口....

    一、final

    •   修饰类,该类永远没有子类,也就是不能被继承, 可以创建对象
    •   修饰类中方法,该方法不能被重写
    •   修饰变量:既可以修饰局部变量也可以修饰成员变量
      • 被final 修饰的变量就是一个常量,只能赋值一次 final int MAX_NUM = 10;

    二、static 

    • 特点:
      • 可以被本类所有的对象共享
      • 可以直接通过 类名.静态成员
      • 优先于对象存在
      • 随着类的加载而加载
    • 一句话:静态方法只能访问静态成员(静态成员变量 静态成员方法),非静态的方法可以访问任何的成员
    •   静态方法能够直接访问静态成员(变量和方法),不能访问非静态 原因:静态优先于对象而存在于内存
    •   非静态方法能够直接访问静态成员,也能够直接访问非静态成员
    •    静态方法中没有this关键字,因为我们可以通过类名.静态方法直接调用,不需要对象      原因 :如果静态方法中含有this,它将无法指向任何对象
    • 静态成员可以通过对象调用也可以使用类名调用,建议使用类名调用!!!
      非静态成员只能通过对象调用!!!

    三、抽象类

    抽象类的特点

    1. 含有抽象方法的类一定是抽象类
    2. 抽象类中既可以有抽象方法也可以有非抽象方法
    3. 如果子类继承了抽象类,要么重写抽象类中的抽象方法,要么子类就声明为抽象类
    4. 不能创建对象,(因为方法没有具体实现,创建对象没有作用) 是用来继承的

    抽象类成员的特点:

    1. 成员变量  可以是常量  也可以是变量
    2. 构造方法    抽象类的构造方法,为了让子类的构造方法调用来初始化父类的成员
      1. 举例 : 
        abstract class Fu {
        	int a;
        
        	public Fu(int a) {
        		super();
        		this.a = a;
        	}
        }
        
        class Zi extends Fu {
        	public Zi(int a) {
        		super(a);
        	}
        }
    3. 成员方法   可以是抽象方法   也可以是非抽象方法

    四、接口(interface)

    • 接口的出现是为了弥补Java没有多继承(java可以多层继承)
    •  接口是一个比抽象类还抽象,接口中所有的方法一定是抽象方法jdk7
    • abstract关键字不能和private, final 共存  原因 抽象需要重写,private和final不要重写
    • 接口可以多继承,也可以多层继承  为什么呢?  
      • 接口中的方法都是抽象的,没有具体实现, 
        多继承不同接口中相同名字的抽象方法也没关系,但是普通类中的方法有具体实现,如果要是多继承,
        不知道执行哪个类中的方法体,所以普通类不能多继承
    • 成员特点
      • 构造方法 
        • 接口中没有构造方法,因为我们的构造方法一般是用来初始化成员变量,但是
          接口中成员变量都是常量,一经初始化,值就固定了,根本不需要初始化
      • 成员方法
        •  public abstract void method();//所有的成员方法都有默认修饰符 public abstract
      • 成员变量
        • public static final int i=10;//所有的成员变量都有默认修饰符 public static final
    • 接口的优点
      • 接口的出现是为了弥补Java没有多继承,
      • 接口出现降低了耦合性
        移动硬盘,鼠标,外置键盘这些设备,当你像使用的时候直接通过USB接口来链接电脑,不  想使用直接拔掉
    • 接口与抽象类
      • 相同点
        • 两者都不能创建对象(不能直接实例化)
      • 不同点
        • 抽象类中定义的是继承体系的共性功能
          接口是扩展扩展功能
        •   构造方法
                    抽象类有构造方法,留给子类通过super()语句来初始化父类成员
                    接口没有构造方法,接口中的变量都是常量
        • 成员变量
                    抽象类中既可以有常量也可以有变量
                    接口由于是一种标准,含有的变量都是常量
        •  成员方法
                    抽象类中既可以有抽象方法也可以有非抽象方法
                    接口中的方法一定是抽象方法

    五、关系 

    • 类与类:一个类只能继承一个类,不能继承多个类
    • 类与接口:一个类可以继承一个类同时还能实现多个接口
    • 接口与接口:一个接口能够继承多个接口(可以多继承 也可以多层继承)

    六、权限修饰符

           		         public  		默认  			protected  			private
       在同一个类中         √             √                  √                 √
       在同一包不同类中      √              √                √
       在不同包的不同类中    √
       (这些类没有父子关系)  ---------------------------------------------------------------------------
       在不同包的不同类中    √                                √ 
       (有父子关系)
  • 相关阅读:
    python 模块和包以及他们的导入关系
    python time,random,os,sys,序列化模块
    python 可迭代对象,迭代器和生成器,lambda表达式
    python之拷贝(深浅)
    python 内置函数
    python 函数的递归
    python 装饰器
    python 函数基础知识整理
    @清晰掉 string.h之基础堵漏
    C和C++之间库的互相调用
  • 原文地址:https://www.cnblogs.com/haojia/p/12386240.html
Copyright © 2011-2022 走看看