zoukankan      html  css  js  c++  java
  • 面向对象

    一、类和对象

    1.类:构造对象的蓝图或模板(抽象)

    由类构造对象的过程叫做类的实例。

    类与类之间的关系:
    1.1依赖(uses-a):一个类的方法操作另一个类的对象,应尽可能将相互依赖的类减至最少,
    1.2.聚合(has-a):意味着一个类的对象包含另一个类的对象。
    1.3继承(is-a):子类继承父类的方法和实例域。

    2.对象:类的具体实现(客观)

    1.2.2构造方法:没有返回值,方法名称与类的名称相同(实例化对象,初始化数据)

    更改器方法:修改对象状态的方法(setxxx())
    访问器方法:访问对象而不修改对象的方法(getxxx())

    二、重载和重写

    1.重载(Override):多个同名函数同时存在,具有不同的参数类型/个数。

    方法名相同,参数不同。(要完整的描述一个方法,需要指出方法名和参数类型。这种叫做方法
    的签名。返回类型不是方法签名的一部分,因此不能有两个名字相同,参数类型相同,返回类型却不同
    的方法。)

    2.重写(Overload):子类可以继承父类中的方法,而不需要重新编写相同的方法。(又称覆盖)

    方法名相同,返回值相同,修饰符大于等于父类,异常小于父类(两同一大一小)

    三、继承、封装、多态

    1.继承:  继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

    this的用途:一是引用隐式参数,二是调用该类的其他构造器。
    super的用途:一是调用超类的方法,二是调用超累类的其他构造器。

    2.封装:封装(encapsulation)是计算机常见的术语,即保留有限的外部接口(interface),隐藏具体实施细节。用户处在封装的外部,只能通过接口,进行所需的操作。

    2.1java访问权限修饰符

    3.多态:不同类的对象对同一消息做出不同反应,同一消息可以根据发送对象的不同而采用多种的不同行为方式。(发送消息就是函数调用)

    多态的必要条件:1.继承 2.重写3.父类引用指向子类对象。

    4.final关键字:由final定义的变量为常量,只能在定义时被赋值。由final修饰的方法不能被重写。由fianl修饰的类不能被继承。

    四、抽象类、抽象方法、接口(模板模式)(只能被继承)

    1.抽象类:

             1)、抽象类不能被实例化,实例化的工作应该交由它的子类来完成,它只需要有一个引用即可。

             2)、抽象方法必须由子类来进行重写。

             3)、只要包含一个抽象方法的抽象类,该方法必须要定义成抽象类,不管是否还包含有其他方法。

             4)、抽象类中可以包含具体的方法,当然也可以不包含抽象方法。

             5)、子类中的抽象方法不能与父类的抽象方法同名。

             6)、abstract不能与final并列修饰同一个类。

             7)、abstract 不能与private、static、final或native并列修饰同一个方法。

            8)、抽象类可以包含属性,方法,构造方法,但构造方法不能用new来实例,只能被子类调用。

    2.抽象方法:

    只有方法的声明,没有方法体

    抽象方法只能被子类继承

    3.接口(只有常量和抽象方法(JDK8以前)):

    接口是抽象类的延伸,可以将它看做是纯粹的抽象类,接口中的所有方法都没有方法体。

             1)、Interface的方所有法访问权限自动被声明为public。

             2)、接口中可以定义“成员变量”,或者说是不可变的常量,因为接口中的“成员变量”会自动变为为public static final。

             3)、接口中不存在实现的方法。

             4)、实现接口的非抽象类必须要实现该接口的所有方法。抽象类可以不用实现。

             5)、不能使用new操作符实例化一个接口,但可以声明一个接口变量,该变量必须引用(refer to)一个实现该接口的类的对象。可以使用 instanceof 检查一个对象是否实现了某个特定的接口。例如:if(anObject instanceof Comparable){}。

             6)、在实现多接口的时候一定要避免方法名的重复。

            JDK8接口中可以定义静态方法以及默认(default)方法.

    要实现接口必须实现接口类的所有方法。

    接口中定义的任何字段都自动是static和final。

    匿名类:不能有名字的类,不能被使用,只有在被创造时用new语句来声明

    目的:在某个地方需要特殊的实现,形式:new<类或接口><类的主体>

        public class Client {  
          
            public static void main(String[] args) throws InterruptedException {  
                Thread t=new Thread(new Runnable() {  
                      
                    @Override  
                    public void run() {  
                        System.out.println("hello,dusk!");  
                          
                    }  
                });  
                t.start();  
            }  
          
        }  
    

      注意:

          1、使用匿名内部类时,我们必须是继承一个类或者实现一个接口,但是两者不可兼得,同时也只能继承一个类或者实现一个接口。
          2、匿名内部类中是不能定义构造函数的。
          3、匿名内部类中不能存在任何的静态成员变量和静态方法。
          4、匿名内部类为局部内部类,所以局部内部类的所有限制同样对匿名内部类生效。
          5、匿名内部类不能是抽象的,它必须要实现继承的类或者实现的接口的所有抽象方法。

     
  • 相关阅读:
    不支持ie9一下代码
    jquery ajax done 函数 异步调用方法中不能给全局变量赋值的原因及解决办法
    WaitMe是一款使用CSS3来创建加载动画的jQuery插件
    Masked Input这个jQuery插件让用户能够按照预先设定好的固定格式输入数据(如日期、电话号码等)
    Autosize插件允许textarea元素根据录入的内容自动调整元素的高度
    两个列表选项插件bootstrap-duallistbox.js
    jquery滚动插件slimscroll
    modernizr.custom.js应用
    bootbox基于bootstrap的扩展弹窗
    洛谷P3503 [POI2010]KLO-Blocks 单调栈
  • 原文地址:https://www.cnblogs.com/ming-long/p/9210595.html
Copyright © 2011-2022 走看看