java面向对象编程介绍

发布于:2023-01-20 ⋅ 阅读:(484) ⋅ 点赞:(0)

1.什么是面向对象的编程opp

一、类

   就是模板,用来定义对象的属性和方法,比如人、学生、猫都有模板(有共同属性的一些事物放在一起)
     类名的首字母大写
  class Student{
  }  //这是一个学生类
  
  class Cat{
  }

 class Person{
 	}
   

二、 对象

   类的实例化  (将一个模板,具体到一个物体)
               比如:  小明、小张他们都是一个对象也是学生这个类的实例化对象

如何实例化一个类(以学生类为例)

   Student student=new Student(); //创建一个新对象=将Student类实例化为student

三、方法

    方法是一个语句的集合,在一起完成一个特定的功能。
    方法在类中或者对象中,即类方法或者普通方法。

方法的定义

      修饰符 返回值类型 方法名 (参数类型 参数名){
            //方法体
            return 返回值   //返回值是返回到调用方法那里
            }

四、继承

  子类继承父类的特征和行为,使得子类对象具有父类的方法和属性。	
  父类也叫基类,具有公共的方法和属性。

五、多态

    同一个行为具有不同表现方式
    优点:减少耦合、灵活可扩展(代码可以与多种类型产品适用)
    一般是继承类或者重写方法的实现

六、抽象

  关键词abstract声明的类叫作抽象类,abstract声明的⽅法叫抽象⽅法
  ⼀个类⾥包含了⼀个或多个抽象⽅法,类就必须指定成抽象类
  抽象⽅法属于⼀种特殊⽅法,只含有⼀个声明,没有⽅法体

2.java中面向对象中的构造函数和封装

什么是构造函数:

  1. 一种特殊的方法
  2. 创建对象用来初始化对象,每次用new创建对象的时候就会使用构造函数
  3. 与类具有相同的名称,但是没有返回值
  4. Java会为每一个类提供一个默认的构造函数
  5. 如果自定义了构造函数,就不再适用默认的构造函数,如果没有显示写出默认的构造函数则会消失

如果构造函数之间互相调用,必须写在方法的第一行。
构造函数的种类:

 默认构造函数
public 类名(){

}

在这里插入图片描述

 无参构造函数
 public 类名(){
 //自定义语句
}

在这里插入图片描述

 有参构造函数
  public 类名(参数类型 参数名称,参数类型1 参数名称1{
   //自定义方法体
}

在这里插入图片描述
构造函数修饰符

public 用的最多 用来创建对象
private 私有化构造函数,不给外部创建对象
default 默认的话,只能在当前包里面使用

关于修饰符的详细介绍
什么是封装

1.封装是把过程和数据包围起来,对数据的访问只能通过已定义的接⼝即⽅法
2.在java中通过关键字private,protected和public实现封装。
3.什么是封装?封装把对象的所有组成部分组合在⼀起,封装定义程序如何引⽤对象的数据,
4.封装实际上使⽤⽅法将类的数据隐藏起来,控制⽤户对类的修改和访问数据的程度。 
5.适当的封装可以让代码更容易理解和维护,也加强了代码的安全性
类封装
⽅法封装

overload(重载,过载)

 在一个类里面方法名字相同,参数不同,和返回类型无关

在这里插入图片描述

override(重写,覆盖)【除方法体之外都一样】

返回值类型,⽅法名,参数类型以及个数
     ⼦类能够根据需要实现⽗类的⽅法
           子类对父类的允许访问的方法的实现过程进行重新编写,返回值和形参都不能改变

3. java面向对象核心关键字this讲解

this关键字
  1.当一个对象创建后,jvm会给这个对象分配一个引用自身的指针,这个指针就是this
  2.只能用于非静态方法,静态方法不能用
  3.this就是指向当前对象

使用场景

     this(参数类型 参数名 )表示当前类对应的构造函数
      方法形参和对象名=的属性重名,用this来区分
      this表示当前对象,通过对象可以调用方法和属性

4.java面向对象之继承

继承

    ⼦类继承⽗类的特征和⾏为,使得⼦类对象具有⽗类的⽅法和属性

格式,通过extends关键字

          class ⽗类名称{
 
}
class ⼦类名称 extends ⽗类名称{
 
}

特点:
子类拥有父类的非private的属性和方法
子类可以用自己的方式实现父类的方法(override重写)
实现了代码的复用
重写从父类哪里继承的方法,当调用方法的时候会优先调用子类方法(默认就近原则)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意:

1.不支持多继承(一个类,继承两个),但支持多重继承(一个继承一个)
2.所有的类都继承于Java.lang,Object
3.final关键字
      修饰这个类,这个类不能被继承
      修饰方法,这个方法不能被重写

5.java面向对象之继承super关键字

super关键字

  一个引用变量,用于引用父类对象
  父类和子类都具有形同的命名方法,需要调用父类方法时使用
  父类和子类都具有相同的命名属性,要调用父类中的属性时使用
  super也是父类的构造函数
     注:调用super必须是类构造函数中第一条豫剧,否则编译不通过

在这里插入图片描述

在这里插入图片描述
this()和super()都指的是对象,均不可以在static环境中使⽤
包括:static变量,static⽅法,static语句块

构造函数 super和this

1.this和super在构造函数中只有一个,且都必须是构造函数当中的第一行(可以创建一个)
2.当父类的构造函数是无参构造函数时,在子类的构造函数中,不用显示super()调用父类的构造函数
3.当⽗类的构造函数是有参构造函数时,如果⼦类的构造函数中不写super()进⾏调⽤⽗类的构造函数,编译器会报错

6.java之面向对象编程之抽象

什么是抽象

动物都有年龄和名称,但是吃的不⼀样,⽺吃草,⽼⻁吃⾁,但是都是闭着眼睛睡觉的
⻋,都有名称和价格,也有跑的⽅法,但是最⾼速度或者动⼒来源不⼀样
当⽗类的某些⽅法不确定时,可以⽤abstract关键字来修饰该⽅法,即抽象⽅法,⽤abstract
来修饰该类,即抽象类
抽象类将事物的共性的东⻄提取出来,由⼦类继承去实现,代码易扩展、易维护

抽象类的特点

1 . 抽象类不能被实例化,因为抽象类中方法未具体化,(只有方法体,没有代码块)这是一种不完全的类,所以不能直接实例化
2.抽象类不一定包含抽象方法,但有抽象方法必定是抽象类
3.如果一个抽象类可以没有抽象方法,这么做的目的是为了此类不能被实例化
4.抽象类的子类必须给出抽象类中抽象方法的具体实现,否则子类也是抽象类需要用abstract声明
5.抽象类不能使用final关键字声明,因为final修饰的类是无法被继承

抽象方法的特点
1.抽象类中的抽象方法只是声明,不包含方法体
2.抽象方法不能用private修饰因为抽象方法必须通过子类实现(重写)
3.一个类继承了抽象类,那么它必须全部覆写抽象类中的抽象方法,当然也可以不全部覆写,如果不覆写全部抽象方法则这个子类也必须是抽象类
4.构造方法、类方法(static修饰的)不能生命为抽象方法

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

7.java面向对象之接口

什么是接口

接口:抽象方法的集合接口通常以interface来声明,一个类通过继承接口的方式,从而来继承接口的抽象方法

基本语法

  interface 名称 [extends 其他的接⼝名] {
         	// 声明变量
        	  // 抽象⽅法
 	
 	}

接口的特点

     1.接口的方法都是抽象方法默认 public和abstract其余修饰符都会报错
     2.接口中可以含有变量,但接口中的变量会被隐式指定为 public static final
     3.类描述对象属性和方法,而接口则包含类要实现的方法
     4.接⼝⽆法被实例化,需要被实现才⾏
 	 5.⼀个实现接⼝的类,必须实现接⼝内所描述的所有⽅法,否则就必须声明为抽象类

接⼝和类的区别

 * 接⼝没有构造函数
 * 接⼝⾥可以有静态⽅法和⽅法体
 * 接⼝中所有的⽅法必须是抽象⽅法(JDK8之后就不是)
 * 接⼝不是被类继承了,⽽是要被类实现
 * 接⼝⽀持多继承, 类不⽀持多个类继承
  • 接⼝的实现implements
  • 当类实现接⼝的时候,类要实现接⼝中所有的⽅法,不然类必须声明为抽象的类,使⽤
    implements关键字实现所有接⼝

class 类名 implements 接⼝名称[, 其他接⼝名称, 其他接⼝名称]{
 //要实现的⽅法
}
``

JDK8新特性

1.interface中可以有static⽅法,但必须有⽅法实现体,该⽅法只属于该接⼝,接⼝名直接调⽤该⽅法
2.接⼝中新增default关键字修饰的⽅法,default⽅法只能定义在接⼝中,可以在⼦类或⼦接⼝中被重写
	default定义的⽅法必须有⽅法体
3.⽗接⼝的default⽅法如果在⼦接⼝或⼦类被重写,那么⼦接⼝实现对象、⼦类对象,调该⽅法,以重写准
4.本类、接⼝如果没有重写⽗类(即接⼝)的default⽅法,则在调⽤default⽅法时,使⽤⽗类定义的default⽅法逻辑

8.java面向对象编程之instanceOf关键字和多态

 InstanceOf 关键词
public interface IPay{ 
 // static修饰符定义静态⽅法 
 static void staticMethod() { 
 System.out.println("接⼝中的静态⽅法"); 
 } 
 
 // default修饰符定义默认⽅法 ,默认⽅法不是抽象⽅法,可以不重写也可以重写
 default void defaultMethod() { 
 System.out.println("接⼝中的默认⽅法"); 
 } 
} 
// static⽅法必须通过接⼝类调⽤ 
 IPay.staticMethod(); 
 
 //default⽅法必须通过实现类的对象调⽤ 
 new IPay().defaultMethod();

是Java的⼀个⼆元操作符(运算符),也是Java的保留关键字
作⽤

 判断⼀个类是否实现了某个接⼝,或者判断⼀个实例对象是否属于⼀个类

语法

 对象类型强制转换前的判断
 ⽅法重写和重载
⽅法重写 overriede
⼦类对⽗类的允许访问的⽅法的实现过程进⾏重新编写,

注意点

返回值和形参都不能改变
⽗类的成员⽅法只能被它的⼦类重写
final 和 static的⽅法不能被重写
构造⽅法不能被重写
访问权限不能⽐⽗类中被重写的⽅法的访问权限更低

⽅法重载 overload

⼀个类⾥⾯,⽅法名字相同但参数不同,返回类型可以相同也可以不同

⽐如构造函数重载
注意核⼼区分

override是在不同类之间的⾏为,overload是在同⼀个类中的⾏为

总结:Java多态

同⼀个⾏为具有多个不同表现形式或形态的能⼒
//如果该object 是该class的⼀个实例,那么返回true。如果该object 不是该class的
⼀个实例,或者object是null,则返回false
boolean result = object instanceof class

参数:

	 result :boolean类型。
  object :必选项。任意对象表达式。
  class:必选项。任意已定义的对象类。

常⻅的⽅式

继承⽅法重写
同类⽅法重载
抽象⽅法
接⼝

网站公告

今日签到

点亮在社区的每一天
去签到