面向对象
1、 面向对象编程的概念:oop人为抽象出来的一种编程模型,其本质上将一个大的问题拆分为若干个小的问题,通过完成
这些小的问题最终达到解决问题的一种编程方式。
2、面向对象的四个基本概念:
对象:Object一切客观存在事物都是对象。对象一定是独一无二的个体
类:class类是具有相同特性或者相同行为对象的集合。
类是对象的模板,对象是类的具体实例。
日常生活中:现有对象,再有类;程序代码中:先有类,后有对象。
属性:<1Field (实例变量,成员变量)
<2类中所有的对象所具有的相同的特征(对象都有什么)
❤️ 结构相同,数据不同
<4通过引用名,属性名可以来对属性进行访问和修改
<5类中定义属性时如果没有赋值,那么有创建出来的对象属性是有默认值的
人类:手、脚、名字、年龄、体重...... 鸟类: 毛、翅膀、名字..... 动物类:名字、体重.... 植物类:根、茎、叶........ 方法function(函数,实例方法):同一类中所有的对象所具有的的相同的动态行为。(对象能干什么) 对象的方法不能使用static修饰 通过引用名,方法名(参数列表)来对方法进行调用 3、引用:<1对象类型的变量,存储在占中,用于保存栈中一个对象的地址,作用是用于指向一个对象的地址。 <2通过引用可以操作对象的属性和方法 <3可以多个引用来之指同一个对象,一个引用对对象属性的修改会影响到另一个引用的访问。 <4null引用类型的特殊值,任意类型都可以赋值为null。 如果一个引用指向的对象为null,通过引用访问了对象属性或者调用了对象的方法就会发生空指针异常NullPointerException。 4、构造方法:Construct0r(构造方法) <1、用于创建对象的方法,在创建对象(实例化)时会自动调用。 <2、构造方法的特点:没有返回值,也不能写void。构造方法得名字必须和类名保持一致、 宰割类中如果没有定义任何构造方法,java会自动提供一个无参的构造方法。 <3、咋一个类中可以同时定义多个构造方法,他们额之间互为重载关系,带参的构造方法给对象属性赋值。 5、特殊引用this关键字 ==》this(当前) <1、this用于指向当前对象,那个对象来调用方法this就指向调用方法的对象。 <2、this.属性名,用于访问当前对象。 <3、属性重名必须带上this,否则this可以省略掉。 <4、局部变量和实例变量(属性)重名了,局部优先。 <5、this(参数列表)调用本类其他的构造方法,该调用只能放在构造方法的第一行 <6、this.方法名(参数列表)调用本类中其他的实例方法,this可以省略。 以上this用法均不能出现在static修饰的方法中 权限访问修饰符:public、protected、default、private public: 1、主要用于修饰类,方法(静态方法、实例方法、构造方法)属性(成员变量)用于限定他们在那个范围可见。 2、在同一个项目下面任意地方都可以访问,如果在别的包下面使用import关键字导包即可 3、 public 修饰的类,类名与必须源文件名称相同 4、在一个类文件中可以同时定义多个类,但是只能有一个类是是用public修饰的,其他的类知识more你的修饰符(不带修饰符)。 protected: 受保护的 在同一个包内部或者不同包的子类中可以访问的。 default:默认的 在同一个包内部可以访问,注意defalut修饰符不能写出来。 private:私有的 只能在同一类中内部可以访问 面向对象的三大特性:封装、继承、多态 封装:使用类的结果将属性数据和方法行为组织起来。 使用类的结构将属性数据和方法I行为组织好起来,可以实现隐藏具体的实现细节, 防止类中的数据被外界随意访问和修改。增强数据的安全性,在对外界提供一个公开的访问的方式。 java中封装最常见操作: <1、属性私有化 在属性前面加上private 修饰符,防止属性数据被外界随意访问和修改。 <2、在向外界提供统一的公开的方式来访问和修改属性。 (1)提供公开的setxxx()方法设置对象的属性值 (2) 提供公开的getxxx()方法来获取对象的属性值 继承:继承的目的为了实线代码的复用,在父类中定义的属性和方法可以被使用extends关键字来继承父类。 语法:class 子类 extends 父类 {} 继承特点: (1)java中是单继承,一个子类只能直接的继承一个父类,但是一个父类可以有多个子类。 (2)子类只能继承父类中非私有的属性和方法。 (3)子类不能继承子类父类的构造方法,无论是私有的还是共有的。 (4)构建子类对象时,必须先构建父类,因为子类每个构造方法第一行默认都会有一个super()方法去调用父类的无参构造方法。 (5)如果父类中没有无参构造方法,必须在子类构造方法的第一行通过super()去调用父类中带参数的构造方法, 参数值可以赋给出来的父类对象属性,但是可以被子类对象所继承,所以也可以理解为调用父类构造方法个子类对象属性赋值 super三种用法: (1)super(参数列表)调用父类中的构造方法 (2)super.属性名 调用父类中的属性 (3)super.方法名(参数列表) 调用父类中的实例方法 方法重写@override (1)定义:子类从父类中继承的方法不满足子类的实际需求时,就需要在子类对从父类中继承过来的方法进行改写和扩展。 (2)重写的方法要求: <1方法名和参数列表必须和父类中一致;方法签名=方法名+参数列表 <2权限访问修饰符的范围必须大于或等于父类中方法的范围 <3父类中方法返回值类型大于或等于子类中方法返回值类型 <4子类中方法不能抛出比父类中方法更多更大的异常