面向对象

目录

一、思想

二、类与对象

三、关键字

四、特征

五、重载与重写

六、引用类型转换

七、接口


一、思想

面向对象是从宏观的角度考虑问题的,面向过程则是细节。比如做饭,从面向对象的角度出发,我们得知道做饭需要买菜,洗菜,做菜……但从面向过程的角度出发,我们需要知道买菜要买什么,买多少;做菜需要什么佐料,量多少……

二、类与对象

  1. 关系:类是对象的抽象,对象是类的实例。
  2. 如何声明类:class  类名(){属性;方法}
  3. 如何创建对象:new 类名()
  4. get,set方法:获取,设置成员变量
  5. 构造方法:对成员变量进行初始化
  6. this指调用它的对象
  7. 访问修饰符:public、protected、默认的、private

 

三、关键字

  1. static

         1)意为静态的,用来修饰成员变量,方法,内部类

         2)static修饰的变量称为类变量,不需要创建对象,可以用“类名.”的形式直接访问

         3)static修饰的变量和方法在一个类中只有一份内存,所有实例共享

         4)static修饰的变量在类加载的时候被初始化

         5)基本规则

  •      在同一个类中,静态方法只能访问静态属性和静态方法,不能访问非静态的
  •      如果访问权限允许,可以使用“类名.”的形式访问,也可以使用“实例.”的形式访问
  •      静态方法中不存在当前对象,因而不能用this,当然更不能用super
  •      不能用static修饰局部变量
  •      静态方法不能被非静态方法覆盖

    2.this

     1)this指向调用它的对象

     2)this()可以在构造方法里调用其他的构造方法

     3)当成员变量与局部变量命名冲突时,用this.调用成员变量

    3.native:指本地方法,也叫JNI,是由C等编写的代码,在java中无法查看其源码

    4.final

     1)修饰类:final修饰的类不能被继承;不能修饰抽象类和接口

          修饰方法:final修饰的方法不能被重写;不能修饰抽象方法

          修饰属性:final修饰的属性不能被二次赋值;修饰引用类型时,比如数组,地址不能改,既指向不能改,但数组中的元素可以改变

四、特征

     1.封装:隐藏代码的实现,对外提供一个接口

         (1)优点:增加软件代码的内聚性,提高可重用性和可维护性

     2.继承:子类继承父类开放权限的所有代码

        (1)单根继承:java中是单继承,但可以连续继承

        (2) 语法:public class A extends B    A继承B中开放权限的所有代码

        (3)一个类的构造方法调用父类的构造方法必须在第一行写上super()

     3.多态:不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态

         (1) Employee e = new Employee();

                   Employee e = new Manager(); 

     4.抽象:避免考虑一些与目标无关的细节

         (1)抽象方法:用abstract修饰的方法,没有具体的方法实现,只有方法签名,例如:public  abstract  void  a();

         (2)抽象类:用abstract修饰的类,抽象类最终必须得有一个具体类来实现,抽象类不能new对象

            注:有抽象方法的类一定是抽象类,但抽象类不一定有抽象方法,抽象类中可以有非抽象方法

五、重载与重写

     1.重载是指在同一个类中,方法名相同,参数列表不同(参数的类型与个数)

     2.重写是指子类方法名相同,参数列表也相同,只是方法逻辑题不同。一般是子类重写父类的方法,要在子类的方法前加注解@override

      限制条件:

      (1)重写的访问修饰符一定要大于等于原来的

      (2)参数列表的顺序和类型必须一致,参数名可变

      (3)返回值类型可变,但只针对于父子类,比如:

public Father a(Father f){
        System.out.println("aaaaa");
        return f;
    }

 @Override
    public Son a(Father f){
        System.out.println("bbbbbb");
        Son s=(Son)f;
        return s;
    } 

 

      (4)不能对私有方法进行重写

六、引用类型转换

       1.自动转换(向上转型):小往大转;子类会自动转为父类,但会隐藏掉子类额外拓展的属性和方法

       2.强制转换(向下转型):大往小转;父类被强制转为子类,把隐藏掉的部分释放出来

Father f=new Son(15,"张三","初中");
//会隐藏子类中额外拓展的属性,getEdubg()是子类拓展的
 System.out.println(((Son)f).getEdubg());

Son son=(Son)new Father();
//释放子类中额外扩展的属性
son.getEdubg();

七、接口

      1.接口是比抽象类还抽象的一种东西,接口不提供任何实现,接口中的所有方法都是抽象方法。

      2.区别

        (1) 普通类:具体实现

        (2) 抽象类:具体实现,规范(抽象方法)

        (3) 接口:规范!

      3.规定

        (1) 接口的访问修饰符只能是public或默认的

        (2) 接口没有构造方法

        (3) 接口中的属性只能是常量,用public  static  final 修饰,其可以省略   

        (4) 接口中的方法只能用public  abstract修饰,并且不写省略

        (5) 一个类要实现接口中的所有方法,一个类可以实现多个接口

      4.面向接口编程

           优点:降低程序模块间的耦合性,提高整个系统的可扩展性和和可维护性。

 

       

 

 

 

     

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值