• 面向对象


    一、类和对象

    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、匿名内部类不能是抽象的,它必须要实现继承的类或者实现的接口的所有抽象方法。

     
  • 相关阅读:
    总结7.13 tp5模板布局
    总结7.13 tp5图像处理
    Flask数据库
    java学习day72-JT项目10(Nginx服务器/tomcat部署/数据库高可用)
    java学习day71-Linux学习(基本指令)
    java学习day71-JT项目09(Linux/JDK/Mariadb/tomcat部署)
    java学习day70-JT项目08(图片回显/Nginx)
    java学习day69-JT项目07-(商品/详情一对一操作//文件上传)
    java学习day68-JT项目06(商品curd)
    java学习day67-JT项目05(商品分类树结构显示)
  • 原文地址:https://www.cnblogs.com/ming-long/p/9210595.html
Copyright © 2020-2023  润新知