javaday10(类与类的关系、访问修饰符、抽象和接口) 一、访问控制符 二、Object 三、抽象(abstract)   四、接口 五、抽象类和接口的区别  六、类和类之间的关系

  1.类的访问控制符

      顶层类的访问级别:默认的(default):仅可以被同包下的类访问

               public:可以被任何代码访问。

      javaday10(类与类的关系、访问修饰符、抽象和接口)
一、访问控制符
二、Object
三、抽象(abstract)
 
四、接口
五、抽象类和接口的区别
 六、类和类之间的关系

  2.成员访问控制符

      除了类有访问控制符之外,类的成员也有访问控制符。如果类的访问控制符不满足要求,则类中成员的访问控制符再大也无法进行访问。

      类中有四种访问控制符:

        public、protected、default、private

     (1)public:

        任何其他类对象,只要看到这个类的话,就可以存取这个变量或者使用方法。

     (2)private:

        不允许任何其他类进行直接存取

     (3)protected:

        同一类,同一个包下可以使用,或者在不同包下的子类可以进行访问存取。

     (4)default:

        只能在同一个包下的类访问。

   javaday10(类与类的关系、访问修饰符、抽象和接口)
一、访问控制符
二、Object
三、抽象(abstract)
 
四、接口
五、抽象类和接口的区别
 六、类和类之间的关系

二、Object

  Object是所有类的父类,是Java语言中所有类的根,所有的类都直接或者间接的继承了Object类。

  Object中定义了11个方法,任何类都默认拥有,可以使用API进行查看。

    equals:用来比较两个对象的虚地址是否相等,相等返回true,不相等返回false

    hashCode:返回对象的哈希地址

    finalize:当垃圾回收机制启动时,会执行此方法,但是不推荐使用,因为垃圾回收机制本身就是不可预测的,所以是否会调用此方法也是不可预测的。

    toString:返回“类的全名@十六进制数” 一般都会选择重写这个方法

    clone:克隆 赋值对象

    

      System. runFinalization( )方法可以手动调用启动垃圾回收机制。

  比较两个对象是否相同:

            javaday10(类与类的关系、访问修饰符、抽象和接口)
一、访问控制符
二、Object
三、抽象(abstract)
 
四、接口
五、抽象类和接口的区别
 六、类和类之间的关系

三、抽象(abstract)

   用abstract修饰的类就是抽象类,抽象类是抽象方法的容器。

    如果某个类中包含有抽象方法,那么这个类一定是抽象类。

    抽象类中可以有普通方法,也可以没有抽象方法。

    抽象类不可以实例化,只可以让子类来继承实现自己的抽象方法。

    抽象类可以有构造方法,提供给子类来快速初始化父类共有的属性。

    如果派生类中没有实现父类的抽象方法,那么该派生类一定也是抽象类。

    构造方法和final,static不能和abstract同时出现。  

  抽象示例:

    

 1 Class 锁{
 2 
 3     Open(){
 4 
 5         //这个里面的代码具体如何实现?
 6 
 7     }
 8 
 9 }
10 
11 Class Shape{
12 
13     Public double area(){
14 
15         return 0;
16 
17     }
18 
19     Public double girth(){
20 
21         return 0;
22 
23     }
24 
25 }        

    javaday10(类与类的关系、访问修饰符、抽象和接口)
一、访问控制符
二、Object
三、抽象(abstract)
 
四、接口
五、抽象类和接口的区别
 六、类和类之间的关系

                 javaday10(类与类的关系、访问修饰符、抽象和接口)
一、访问控制符
二、Object
三、抽象(abstract)
 
四、接口
五、抽象类和接口的区别
 六、类和类之间的关系

                   javaday10(类与类的关系、访问修饰符、抽象和接口)
一、访问控制符
二、Object
三、抽象(abstract)
 
四、接口
五、抽象类和接口的区别
 六、类和类之间的关系

        javaday10(类与类的关系、访问修饰符、抽象和接口)
一、访问控制符
二、Object
三、抽象(abstract)
 
四、接口
五、抽象类和接口的区别
 六、类和类之间的关系

 

四、接口

     接口是设计层面的概念,往往由设计师设计,将定义与实现分离

    程序员实现接口,实现具体方法

    面向接口编程和面向对象编程并不是平级的,它并不是比面向对象编程更先进的一种独立的编程思想,而是附属于思想体系,属于其一部分。

    面向接口编程的意思是指在面向对象的系统中所有的类或者模块之间的交互都是由接口完成的。

    接口是一种特殊的抽象类。接口的访问权限默认为public 也必须是public

      [访问权限] interface 接口名{

        公开静态常量列表;

        公开抽象方法列表;

      }

    javaday10(类与类的关系、访问修饰符、抽象和接口)
一、访问控制符
二、Object
三、抽象(abstract)
 
四、接口
五、抽象类和接口的区别
 六、类和类之间的关系

     javaday10(类与类的关系、访问修饰符、抽象和接口)
一、访问控制符
二、Object
三、抽象(abstract)
 
四、接口
五、抽象类和接口的区别
 六、类和类之间的关系

     javaday10(类与类的关系、访问修饰符、抽象和接口)
一、访问控制符
二、Object
三、抽象(abstract)
 
四、接口
五、抽象类和接口的区别
 六、类和类之间的关系

 JDK1.8之后接口加入默认方法:

      如果两个接口中含有同名的默认方法,会发生编译错误。

       javaday10(类与类的关系、访问修饰符、抽象和接口)
一、访问控制符
二、Object
三、抽象(abstract)
 
四、接口
五、抽象类和接口的区别
 六、类和类之间的关系

                  javaday10(类与类的关系、访问修饰符、抽象和接口)
一、访问控制符
二、Object
三、抽象(abstract)
 
四、接口
五、抽象类和接口的区别
 六、类和类之间的关系

     、javaday10(类与类的关系、访问修饰符、抽象和接口)
一、访问控制符
二、Object
三、抽象(abstract)
 
四、接口
五、抽象类和接口的区别
 六、类和类之间的关系

五、抽象类和接口的区别

     Java类的继承是单一继承,Java接口的继承是多重继承。

          javaday10(类与类的关系、访问修饰符、抽象和接口)
一、访问控制符
二、Object
三、抽象(abstract)
 
四、接口
五、抽象类和接口的区别
 六、类和类之间的关系

    javaday10(类与类的关系、访问修饰符、抽象和接口)
一、访问控制符
二、Object
三、抽象(abstract)
 
四、接口
五、抽象类和接口的区别
 六、类和类之间的关系

  

   注意:新接口可以继承原有接口,新接口拥有原有接口的所有抽象方法。

   implements用于指定该类实现的是哪些接口。当使用implements关键字接口列表中存在多个接口名时,各个接口名之间使用逗号分隔 

   Java接口继承接口的原则:

      1.Java接口可以继承多个接口

      2.接口继承接口依然使用extends关键字,不要错用成implements

      3.在声明接口之间的继承关系时,extends关键字后可以是一个列表

     Java接口继承接口的形式:

        public interface A extends B,C,D{

        公开静态常量;

        公开抽象方法;

      }

    javaday10(类与类的关系、访问修饰符、抽象和接口)
一、访问控制符
二、Object
三、抽象(abstract)
 
四、接口
五、抽象类和接口的区别
 六、类和类之间的关系

    实现接口的语法:

      [修饰符] class 类名 [extends 父类名] [implements 接口列表]{     }

      

 六、类和类之间的关系

  由弱到强的关系排列:依赖<关联<聚合<组合

  依赖:可以用方法中的参数来说明,体现了use a的关系。

  关联:可以用成员变量来说明,体现了has a的关系。