面向对象2020-12-25演讲人01编程思想编程思想0102面向过程面向对象编程思想面向过程关注点是过程——站在一个执行者的角度去考 虑事情,做事情。例如:Lanbda表达式面向过程关注点是过程——站在一个执行者的角度去考虑事情,做事情。例如:Lanbda表达 式编程思想面向对象面向对象的思维方式关注点是对象——站在指挥者的角度面向对象关注点是对象——站在指挥者的角度面向对象的思维方式2 、何为这些对象。(构建类)3、对象和对象的关系1、思考问题中涉及到对象有哪些A:继承关系:is-aB:实现关系:实现类,实 现接口C:依赖关系:一个类作为另一个类方法的参数D:关联关系:一个类作为另一个类的属性02类和对象类概念:同一类事物的抽象描述成 员变量:描述类的外部特征,“名词”成员方法:描述类的行为功能,“动词”对象类的一个具体到实例对象.属性:进行赋值或取值操作对象. 方法:将方法进行调用类和对象将类进行实例化就是创建对象,将同一类的对象进行抽象描述就是构建类构造方法又叫构造器,构造函数,Cons tructor就是一个特殊的方法声明:修饰符:只允许访问权限返回值类型:没有,不能写void方法名:必须与类名一致参 数列表:有参,无参调用:必须用new关键字调用,开辟堆内存,创建对象注意点:如果一个类中,没有显示构造方法,那么由编译器自动 添加一个无参的构造方法还可以直接创建匿名对象有=右边但创建对象,没有=右边的引用03三大特征三大特征P3P2多态性P1继承性封 装性三大特征封装性20103概念:“打包”,隐藏类的实现细节,对外提供统一操作访问权限修饰符0204体现this关键字体现类 的封装体现方法的封装属性的封装1、private修饰属性2、提供getter和setter方法,进行属性的获取和赋值注意:boo lean类型的属性,getter方法名为:isXXX()访问权限修饰符限于类的内部能够访问1、private01限于同一包下能 够访问2、默认的02限于同包下能够访问,不同包需要是子类中才能够使用3、protected034、public没有限制0401.1 、代表本类的对象,可以直接访问本类的属性和方法。如果本类没有,会访问父类。02.2、代表本类的构造方法,this(),无参构造。 要位于首行this关键字三大特征继承性概念:描述两个的关系,一个子类继承父类作用关键字:extendsis-a的关系继承的局 限性子类对象的创建过程三大特征继承性super关键字方法的重写:override12概念:描述两个的关系,一个子类继承父类1、子类 可以直接访问父类非私有化的属性和方法012、子类可以新增自己的属性和方法023、子类可以重写父类已有的方法03作用3、模拟现实世 界的关系2、子类扩展父类的功能1、降低程序的冗余,避免重复代码关键字:extendsclassSubClassextends SuperClassis-a的关系不是有重复代码,就要使用继承。要看两个类,是否满足is-a的范式继承的局限性java中类只 能单继承:一个类只能有一个父亲,但是允许多层继承子类对象的创建过程1、先调用父类的构造方法,如果我们没有写,编译器自动添加默认 调用父类的无参构造方法2、再调用子类的构造方法01.1、可以直接访问父类的属性和方法02.2、指代父类的构造方法(父类及以上): 无参构造,有参构造。super(),要位于首行super关键字三大特征多态性概念:事物的多种形态方法的多态方法的重载:over lad概念:一个功能方法,根据参数的不同,执行的具体方法也不同规则:A:同一个类中B:方法名必须一致C:参数列表必须不同 :个数,类型,顺序向上转型向下转型对象的多态结合方法的重写应用对象的多态向上转型一个父类引用,指向子类对象(将子类对象看成父类 类型)那么可以访问父类的属性和方法,以及子类重写方法,会失去子类新增对象的多态向下转型以向上转型为前提,在将子类对象,转为子类类型 那么可以访问父类的属性和方法,以及子类重写的方法,还有子类新增的方法instaceof关键字对象的多态结合方法的重写父类引用,指 向父类的对象,执行的是父类的方法(不是子类重写的)父类引用,指向子类的对象,执行的是子类重写的方法对象的多态应用1、将父类类型作 为参数,可以传入任意的子类对象2、将父类类型作为返回值,可以返回任意的子类对象04static关键字static关键字1、静态属 性010203类的属性,属于类,仅一份。由类来方法。对象也可以访问,多个对象共享一份数据随着类的加载而产生应用:该类的所以对象, 该属性值相同,就可以设计为static的。节省内存,操作便捷static关键字2、静态方法类的方法,属于类,由类调用。对象也可以 调用(不推荐)01静态方法中可以有静态属性和静态方法02静态方法中不能有非静态属性和非静态方法,以后this和super关键字03 应用:如果一个方法不涉及到对象的内容,就可以设计为静态方法04工具类:往往都是静态方法,有类名直接调用。05A:局部代码块B: 构造代码块3、代码块C:静态代码块D:同步代码块3、代码块A:局部代码块也叫普通代码块,就是方法中的一块代码。{},if,for, while。。。注意作用域3、代码块B:构造代码块类里,方法外的代码块。当创建对象,随着构造方法的调用而执行,优先于构造方法执行 。创建几个对象,就执行几次。可以统一初始化非静态属性3、代码块C:静态代码块static修饰的代码块当程序加载的时候执行,优先于 main()方法执行,只执行1次如果有些代码块必须在项目启动的时候就执行,可以使用静态代码块3、代码块D:同步代码块多线程sta tic关键字4、静态内部类05final关键字概念:最终的,最后的01final关键字1、修饰变量(成员变量和局部变量),不允许在 修改值022、修饰方法,不允许子类重写033、修饰类,不允许子类继承0406abstract关键字概念:抽象的1、修饰方法:抽 象方法abstract关键字2、修饰类:抽象类abstract关键字1、修饰方法:抽象方法020301抽象方法:只有方法的声明, 没有具体的实现,{}也没有,直接分号结束将方法的声明和具体的实现分离。所在的类,必须是抽象的abstract关键字抽象类:不能被实 例化,不能创建对象2、修饰类:抽象类抽象类中可能包含抽象方法(也可以没有抽象方法,还是要以抽象类的方式实例化)必须等待子类继承, 并实现所有的抽象方法,才允许创建子类对象如果子类没有全部实现抽象方法,那么子类也必须声明为抽象方法,再等子类继承并实现抽象方法所以 ,抽象类一般用于做父类。抽象类:成员变量,静态成员变量,成员方法,静态方法,构造方法,抽象方法。07接口接口概念:接口就是一个协议 ,一个规则,一个标准,一个功能声明接口关键字0102interface接口名{}实现类implement接口{}接口语法0 22、定义抽象方法:默认修饰符publicabstract011、定义静态常量:默认修饰符publicstaticfi nal注意点1、多实现:一个实现类可以同时实现多个接口,表示同时满足多个规则2、多继承:类只能单继承,但是接口可以多继承,那么 实现类要实现所有的方法,包括继承来的3、如果一个实现类没有实现接口中的所有抽象方法,那么该类是抽象类,要等子类来继承,并实现4 、一个实现类可以继承父类的同时,在实现接口5、接口中的特殊方法1、也可以有静态方法,但很少这么干(与类中的静态方法类似,接口名直接调用)2、JDK1.8之后,还允许default方法,这个可以有方法体补充:default要写出来,不同于权限修饰符的默认;default的用法只在接口中有接口作用0102031、降低了线程的耦合性2、定义的都是规则,保持接口的一致3、接口可以多继承,使用起来更灵活。弥补了java单继承的局限性感谢聆听 |
|