Java中的面向对象详解

类:种类、分类的意思。把具体事物的共同特征抽取出来归为一类, 类。
         抽象的:
         类包含:
            属性:静态的(年龄、体重、身高等)
            行为:动态的(吃饭、睡觉、说话)
     
       注意事项:
           类名要和文件名一致(大写)。
           类名要有意义。
           类名上面加一行注释
     
       标准类:
           属性
           方法
           有参/无参构造方法
           toString
     


    
      对象: 具体的一个事物,是类的具体体现。
     
      抽象: 提取共同特征
     
      类和对象之间的关系:
         类是对象的抽象,
         对象是类的体现
     
      姓名    人      动物
      对象--->类---->抽象类
     
     
      类  对象   抽象

 封装:
         封装就是把一个事物包装起来,不让别人知道内部的细节,从而保证安全性。
     
      java里的封装:  (封装是面向对象三大特征之一)
        1 把成员变量私有化    private(私有的)
        2 给成员变量添加set  get方法
     
     
        public   private
     


    
      访问修饰符: 4个,最常用的private  public
    
             private:私有的,只能在本类中使用
             default:同一个包里面可以用
             protected:同一个包或者子类
             public:   所有地方
     
       注意: private一般用来修饰属性
             public一般用来修饰方法
     

    
      重点: 本质文件夹,域名倒着写
     
      包: package 本质就是一个文件夹,把功能相同的类放到一个地方,方便管理。
      怎么写: 域名倒写。  DNS
      包名: 全限定名(可以区分相同类名的不同类)
      import  导包,引入文件的意思
      package:  告诉别人,我这个类是在那个包里面的。
     

    
      static :
           static 修饰成员变量和方法。被static修饰的只能static修饰的,不能调用非static修饰的  (需要记忆)
           static修饰的成员变量和方法属于类的, 非static修饰的属于对象。
           出生时间: 类是早于对象创建的。
               类是: 方法区(元空间)
               对象: 堆
     
      final: (需要记忆)
          变量:值不能发生变化.
          类: 不能被继承.  (太监类)
          方法:不能被重写.
      类:
      对象:
      抽象:
      举例子: 类和对象的例子(区别)
     
     
      封装:
        1 成员变量私有化
        2 成员变量 set  get方法
     
     
      访问修饰符: private、public
        private:
        defalut:
        protected:
        public:
     
       非访问修饰符:
           static:
           final:
     
      包:
           文件夹,方便管理
           域名倒着写
           (import  package)
     面向过程和面向对象的区别:
      
        继承:  extends
              继承父类非private的属性和方法   (一般继承方法)
      
        继承的使用场景:
      
      
        this和super
         1 都可以代表对象,对象可以调用属性和方法  this.xx  super.xx
         2 构造方法里面怎么用。 this()  super() 代表调用构造方法,并且只能在构造方法里面被调用,而且必须放在第一行
      
      
         抽象类:
             抽象类和普通类的区别:
                  1 普通类里面不能有抽象方法、抽象类里面可以有普通方法
                  2 抽象类里面可以有构造方法,但是不能实例化对象
                  3 普通类继承了抽象类,必须重写抽象方法

面向过程和面向对象的区别:
      
        继承:  extends
              继承父类非private的属性和方法   (一般继承方法)
      
        继承的使用场景:
      
      
        this和super
         1 都可以代表对象,对象可以调用属性和方法  this.xx  super.xx
         2 构造方法里面怎么用。 this()  super() 代表调用构造方法,并且只能在构造方法里面被调用,而且必须放在第一行
      
      
         抽象类:
             抽象类和普通类的区别:
                  1 普通类里面不能有抽象方法、抽象类里面可以有普通方法
                  2 抽象类里面可以有构造方法,但是不能实例化对象
                  3 普通类继承了抽象类,必须重写抽象方法

/  
       面向过程: C语言, 以方法为主体,所有的功能都是通过方法之间的调用完成的。
       面向对象: java,C++、C#、python、javascript 以对象为主体、对象和对象之间的调用。
      /


    /  
       继承: 子类拥有父类的属性和方法。(面向对象的三大特征之一)
           子类:
           父类: (基类、超类)
      
      
        特点:
            1 子类不能继承父类的private属性和方法
            2 类的继承是单继承,但是可以多重继承。
            3 一般属性用private修饰,方法用public修饰,所以我们以后开发的工作里面,主要是继承方法的。
      
      
      
        格式:  extends
           public 子类 extends 父类{
      
           }
      
        使用场景:
            如果多个类有共同的属性和方法,那么我们可以把这些类中共同的属性和方法放到父类中,让这些类(子类)去继承父类,减少代码的重复性。
      /

 this、super
         都可以代表对象,对象可以调用属性和方法  this.xx  super.xx
         构造方法里面怎么用。 this()  super() 代表调用构造方法,并且只能在构造方法里面被调用,而且必须放在第一行
      
       this:
            1 对象本身,new的对象就是这个this
            2 this()  调用构造方法,可以有参数,一般只在构造方法里面
            3 如果构造方法里面调用this(),只能放在第一行,否则报错。
      
      
       构造方法补充:
           如果类里面没有写构造方法,那么系统默认给一个无参构造方法。
           如果类里面有有参构造方法,那么系统不会给无参构造方法。
      
       super
          1 代表的就是父类对象
          2 子类的构造方法里面,默认第一句会添加super()
          3 如果子类构造方法手动调用super(),必须放在第一行

抽象类: 把具有共同特征的类提取出来就是抽象类。
      
       特点:
         1 不能实例化对象。
         2 抽象类就是当爹的。(抽象类就是用来被继承)
      
       格式:
         在创建类的时候,class前面加上abstract
      
      /


    /  
       抽象方法:被abstract修饰的方法就叫抽象方法,没有方法体。
          如果普通类继承了抽象类,那么抽象类中的抽象方法必须被重写,否则报错
      /


    /  
       抽象类和普通类的区别:
         1 普通类里面不能有抽象方法、抽象类里面可以有普通方法
         2 抽象类里面可以有构造方法,但是不能实例化对象

抽象类和普通类的区别:
         1 普通类里面不能有抽象方法、抽象类里面可以有普通方法
         2 抽象类里面可以有构造方法,但是不能实例化对象

方法重写: 在继承或者实现关系里面,如果子类和父类的方法名、参数列列表、返回值完全一致,就是方法重写。修饰符>父类,异常<父类
      
             1 在继承或者实现关系里面.
             2 方法名相同
             3 参数列表
             4 返回值
             5 修饰符
             6 异常
      
       方法重写的目的?
           父类的方法不适用子类,那么子类就要考虑重新定义这个方法

1 接口的特点:
           1 接口里面的方法都是抽象方法    public abstract
           2 接口里面的变量都是静态常量    public static final
           3 接口里面没有构造方法,所以也不存在实例化对象的概念。
           4 接口和接口可以多继承
           5 类和接口之间是实现关系,可以多实现。
      
       2 多态:
           1 三个条件
           2 使用场景
      
       3 异常
           1分类
            编译时异常
            运行时异常
           2 怎么解决异常  2种方式
           3 制造异常     throw  new RuntimeException();

1 接口: 定义规范的,主要是由抽象方法构成的。
            (一个类实现了接口,就要按照规矩重写接口里的所有抽象方法)
      
           关键字:
                定义接口:interface
                实现接口:implements
      
           接口中定义抽象方法的时候可以省略: public abstract
      
      
       2 接口的特点:
           1 接口里面的方法都是抽象方法    public abstract
           2 接口里面的变量都是静态常量    public static final
           3 接口里面没有构造方法,所以也不存在实例化对象的概念。
           4 接口和接口可以多继承
           5 类和接口之间是实现关系,可以多实现。
          [6 接口中的方法不能用static修饰]

多态:
            同一个数据类型的对象,使用相同的方法,表现出不同的结果。(面向对象的三大特征之一)
      
      必备的条件:
           1 继承或者实现
           2 方法重写
           3 父类的引用指向子类的对象
      
      
       使用场景:
           我们在定义方法的时候,方法的参数用父类类型,调用方法的时候传入子类类型,这样可以提供代码的扩展性。
      
       注意事项:
           满足多态的情况下,
              1 父类的引用不能调用子类特有的方法。
              2 如果父类有,子类没有,可以调用(继承)


异常: 代码发生的错误(报错)
           1 错误: 没办法挽回,纠正。  栈溢出(递归的时候)
           2 异常: 发生错误以后可以捕获,并且处理。
                |- 运行时异常: 代码跑起来以后报的错
                 1.NullPointerException(空指针异常)
                 2.ArithmeticException(运算非法异常)
                 3.IndexOutOfBoundsException(数组越界异常)
                 4.ClassCastException(类转换异常)
                 5.ArrayStoreException(数据存储异常,操作数组时类型不一致)
                 6.BufferOverflowException(字节溢出异常—IO流操作)
      
                |- 编译时异常: 代码还没跑就报错了
                1.ClassNotFoundException(类找不到异常)
                2.FileNotFoundException(编译文件夹中找不到,就是发布到tomcat中的,不是工程中)
                3.SQLException :提供有关数据库访问错误或其他错误的信息的异常。( 比如SQL语句写错,访问的表不存在,连接数据库失败等等)
                4.IOexception:IO流异常。一般在读写数据的时候会出现这种问题。
                5.EOFException:当输入过程中意外到达文件或流的末尾时,抛出此异常。
        异常解决:
             1 throws   把错误给了别人,谁调用谁解决,如果一层一层往上推,最终给了jvm   不推荐用(做练习的时候用用就行了)
             2 try...catch...finally   自己的错误字节解决
      
      
        制造异常:
            throw  new RuntimeException();

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值