2021-08-14

java练习

  1. final方法不等同于private方法
    虽然类中的private方法都隐式地指定为final,但是二者并不是等同的。private是访问权限修饰符,用于控制外界对类内部成员的访问,private方法只能在类的内部访问,而final方法可以在类外部访问 final修饰类,表示类不可被继承
    final修饰变量,表示变量不可更改
    final修饰方法,表示方法不可被覆盖

2 方法的重写和重载是多态的不同表现形式
重写是父类与子类之间多态性的一种表现。
重载是一个类中多态性的一种表现。
重写是子类继承父类方法并对其进行修改,可选择调用父类方法或子类重写后的同名方法
重载是在一个类可以存在同名但参数列表不同的方法,可根据传入的参数调用相应的方法
重写和重载区别

  *方法的重载:*   
  方法重载的定义:
  同一个类或与他的派生类中,方法名相同,而参数列表不同的方法。其中参数列表不同指的是参数的类型,数量,类型的顺序这三种至少有一种不同。            方法重载与下列无关:
      与返回值类型无关;
      与访问修饰符无关 
       构造方法也可以重载    

  *方法的重写:*
    方法的重写的定义: 在继承关系的子类中,定义一个与父类相同的方法      判断是否重写的方式: 在方法之前加上@ Overri de 
   方法重写的特点:
    在继承关系的子类中重写父类的方法  
    重写的方法必须方法名相同,
    参数列表也相同  
    重写的方法的返回值类型应该与父类中被重写方法的返回值类型相同或是他的子类类型   
    重写的方法的访问权限应该与父类中被重写方法的访问权限相同或高于它的访问权限    
    重写的方法不能抛出比父类更加宽泛的异常 
   方法重写的注意事项:
      构造方法不能被重写
      因为构造方法名必须和类名相同    
      private修饰的成员方法不能被重写   
      static修饰的方法不能被重写   
      final修饰的方法不能被重写    
      当子类重写了父类中的方法后,子类对象调用该方法时调用的是子类重写后的方法
  1. hashmap和hashtable的不同
    1.继承不同。public class Hashtable extends Dictionary implements Map public class HashMap extends AbstractMap implements Map
    2、Hashtable 中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的。在多线程并发的环境下,可以直接使用Hashtable,但是要使用HashMap的话就要自己增加同步处理了。
    3、Hashtable中,key和value都不允许出现null值。
    在HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null 当get()方法返回null值时,即可以表示 HashMap中没有该键,也可以表示该键所对应的值为null。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键, 而应该用containsKey()方法来判断。
    4、两个遍历方式的内部实现上不同。 Hashtable、HashMap都使用了 Iterator。而由于历史原因,Hashtable还使用了Enumeration的方式 。
    5、哈希值的使用不同,HashTable直接使用对象的hashCode。而HashMap重新计算hash值。
    6、Hashtable和HashMap它们两个内部实现方式的数组的初始大小和扩容的方式。HashTable中hash数组默认大小是11,增加的方式是 old*2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数

  2. java接口的修饰符可以为abstract
    接口是一种特殊的抽象类,先说明抽象类中的抽象方法,再说明接口
    抽象类中的抽象方法(其前有 abstract1修饰)不能用 private、 static、 synchronized、na
    tive访回修饰符修饰。原因如下:
    1.private 抽象方法没有方法体,是用来被继承的,所以不能用 private修饰;
    2.static static修饰的方法可以通过类名来访间该方法(即该方法的方法体),抽象方法用sttic修饰没有意义;
    3.synchronized 该关键字是为该方法加一个锁。而如果该关键字修饰的方法是 static方法。则使用的锁就是class变量的锁。如果是修饰类方法。则用this变量锁。
    但是抽象类不能实例化对象,因为该方法不是在该抽象类中实现的。是在其子类实现的。所以,锁应该归其子类所有。所以,抽象方法也就不能用 synchronized关键字修饰了;
    4.native native这个东西本身就和 abstract冲突,他们都是方法的声明,只是一个把方法实现移交给子类,另一个是移交给本地操作系统。如果同时出现,就相当于即把实现移交给子类,又把实现移交给本地操作系统,然后就是实现
    接口是一种特殊的抽象类,接口中的方法全部是抽象方法(但其前的 abstract可以省略),所以抽象类中的抽象方法不能用的访间修饰符这里也不能用。同时还要说明一下protect关键词
    5.protect protected访同修饰符也不能使用,因为接口可以让所有的类去实现(非继承),不只是其子类,但是要用public去修饰。接口可以去继承一个已有的接口。

参考链接:http://www.360doc.com/content/16/0406/21/26211242548419991_.shtml

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值