您的位置:首页 > 编程语言 > Java开发

java(单例模式、抽象类、接口、内部类)

2017-03-08 17:22 148 查看
单例模式

只能创建一个实例
  创建实例需要有构造器,但是公共的不行
 
 1.构造器私有化
 2.创建静态的实例 
 3.通过公共的静态方法返回
Singleton s1 =Singleton.getSingleton();
Singleton s2 =Singleton.getSingleton();

System.out.println(s1);
System.out.println(s2);
System.out.println(s1==s2);
/*运行结果
私有构造器
com.hpe.java1.Singleton@4d43691d
com.hpe.java1.Singleton@4d43691d
true*/


抽象类

   1.使用abstract关键字定义的类
  2.特点:抽象类不可以不实例化,可以被被继承(与final类恰好相反),能不能有构造器?  能
  3.只要是类就会有构造器
  4.abstract不能用来修饰属性、构造器、private、static、final。
   5.抽象类不能被实例化。抽象类是用来被继承的,抽象类的子类必须重写父类的抽象方法,并提供方法体。
   抽象方法:
   用Abstract修饰的方法,只保留方法的定义(方法的声明),没有方法体,以分号结束
    abstract intabstractMethod1( int a);
   作用:抽象方法,只保留方法功能,而具体的实现,交给继承抽象类的子类,重写这个抽象类的方法。如果不重写这个类也是抽象类
   子类必须要重写这个方法吗?    必须
  
  抽象类与抽象方法的关系
   抽象类中不一定有抽象方法,但 具有抽象方法的类一定是抽象类
 抽象类 vs 一般类
 相同点:
      都是用来描述事物的,内部都有类的成员
 不同点:
      抽象类不能创建实例, 一般类可以创建实例
      抽象类中可以包含抽象方法,一般类不可以包含

接口

   1.接口定义的是一种功能、功能又类来实现(implements),

      class Bextends C implements A

   2.如何定义接口:使用关键字interface

   3.格式 interface  接口类{}....

   4.内部可以放什么呢?接口中可以包含常量与抽象方法,不能有变量及其他的方法

      接口中的所有成员变量都默认是由public static final修饰的

      接口中的所有方法都默认是由public abstract修饰的。

      接口中的成员,修饰符默认的都是public

      接口没有构造器

   5.在java中继承的是单继承,一个子类只能继承一个父类,通过关键字extends    子类与父类的关系是继承

        在java中 一个类可以实现多个接口,通过关键字implements,类和 接口的关系是实现

   6.一个类实现接口,就要重写他的抽象方法,不重写的化这个类必然是抽象类

   7.一个类可以实现多个接口,中间用逗号隔开

   8.当一个类既继承类又实现接口的时候,将接口放在后面  

   9.类与类之间是单继承,接口与接口之间  是多继承  (接口也可以继承另一个接口,使用extends关键字)

   10.接口也有多态性

   11.如果实现接口的类没有实现接口中的全部方法,必须将此类定义为抽象类。

总结:

      在开发中,一个类不要去继承一个已经是实现好的类,要么继承抽象类要么实现接口

      通过接口来定义功能,可以使不相关的类具有该功能(具体的实现可能不同),不需要考虑这个类之间的关系,以及方法的具体

      通过接口可以指明多个类需要实现的方法,一般用于定义对象的扩展功能

      接口主要是用来定义规则的

 

抽象类和接口的区别

(1)接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的。
(2)abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface,实现多重继承。接口还有标识(里面没有任何方法,如Remote接口)和数据共享(里面的变量全是常量)的作用。
(3)在abstract class 中可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是 static final的,不过在 interface中一般不定义数据成员),所有的成员方法默认都是 public abstract 类型的。
(4)abstract class和interface所反映出的设计理念不同。其实abstract class表示的是"is-a"关系,interface表示的是"has-a"关系。
(5)实现接口的一定要实现接口里定义的所有方法,而实现抽象类可以有选择地重写需要用到的方法,一般的应用里,最顶级的是接口,然后是抽象类实现接口,最后才到具体类实现。抽象类中可以有非抽象方法。接口中则不能有实现方法。
(6)接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以在子类中重新赋值。

内部类

也就是说:  一个类可以定义在一个类的内部,里层的内部类 ,
外层的是外部类  
根据位置来划分:  成员内部类、局部内部类   
成员内部类 : private 缺省 protected public final static
             还是个类
             adstract
             成员内部类  按照是否用static修饰  分为非静态成员内部类 、静态成员内部类       
主 要:   如何创建内部类的对象  
          如何解决重名问题   
内部类还是个内部类:可以添加属性、方法、构造器
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 语言
相关文章推荐