java面向对象

1 面向过程

  • 其实就是面向着具体的每一个步骤和过程,把每一个步骤和过程完成,然后由这些功能方法相互调用,完成需求。
    特点:强调的是过程,所有事情都需要自己完成

2 面向对象

思想就是不断的创建对象,使用对象,指挥对象做事情。万事万物皆对象。

  • 特点:具有继承、封装、多态三大特性
  • 类的属性:全局变量(成员变量):在类中、方法外,随着对象的创建初始化,随着对象的销毁而销毁。
  • 局部变量:在方法中,随着方法的加载而加载,随着方法的死亡而死亡
  • 类的定义方式:
    权限修饰符 返回值 方法名(参数类型 参数名…){ 方法体 }
  •   权限修饰符:
    
  •   						public(公共的,哪都可用)
      						protected(受保护的)
      						默认不写(只在同包可用)
      						private (私有的,在同类可用)
    

如:创建一个a对象Animal a = new Animal();Animal中的有构造方法

  • public Animal(String name,int age){
    this.name = name;
    this.age = age
    }
    此构造方法中的name和age会在创建对象时初始化后再初始化一次
  • 图1.使用作为方法的返回值
    方法返回值
  • 图2 对象作为参数 传递到方法中
    对象传递到方法
  • 图3 访问静态成员变量
    访问静态成员变量
  • 图4 新建两个对象

新建两个对象

3 构造方法

(1)用来创建对象(类名就是构造方法)
(2)权限修饰符 类名(参数类型 参数名){ }
注意:

  • 1.一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系 统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。
  • 2.如果指定了构造方法,就不会生成无参构造。
  • 3.带参构造方法会在堆初始化之后再初始化,即相当于参数会被初始化两次。
  • 4.构造方法名必须和类名相同
  • 5.构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。
  • 6.构造方法之间的调用使用this关键字

如:
例子

  • 类也可以作为类型进行传递和返回。
  • 如:
  • 例子

4 static关键字

  1. 描述:静态的。
  2. 静态的东西使用不需要创建对象(也可使用对象调用【不推荐】)
  3. 调用方式:直接使用类名 . 静态方法【推荐使用】
  • Static内存图

static内存图(1) 类的加载顺序:会优先加载静态,然后才是非静态
即:静态只能使用静态,非静态可以使用静态也可以使用非静态。
(2) 定义静态变量,会直接在内存中的方法区的静态区先进行初始化,不会再在堆中初始化,即静态的东西只会初始化一次。
(3) 静态的生命周期:随着类的加载而加载,随着类的销毁而销毁。
(4) 静态中没有this,静态方法(或者对象)会在类加载之前加载。

5. 代码块

  • 局部代码块:在方法中的代码块
  • 构造方法块:在构造方法中的代码块
  • 初始化与类相关的东西(成员变量等)
  • 静态代码块:在类中的静态代码块
  • 初始化静态成员变量(即公有的静态成员变量等)
    代码执行顺序:静态方法–>构造代码块–>构造方法

6. 继承

Java中所有的类都继承Object类,Java中只能单继承

  • 继承:类与类之间的关系
    使用extends实现继承关系。如父类(Fu),子类(Zi)继承父类(Zi extends Fu)
  • 父类(也叫基类):私有的(private)子类不能继承。
    父类定义:一般为公有的属性及方法
  • 子类:可以继承父类的非私有属性

若子类、父类中都有构造代码块、静态代码块、构造方法块,则执行顺序为:
父类静态代码块–>子类静态代码块–>父类构造代码块–>父类构造方法–>子类构造构造代码块–>子类构造方法
重写(override):子类对父类方法的重写(参数类型,方法名都要相同)

  • 注意:重写(override)和重载(overload)的区别
    重写是在子类和父类之间的,父类含有的方法,子类才可以重写。
    重载是在一个类中,方法名相同,而参数类型、个数不同。

(1)在子类的构造方法中,会默认有一个super(); 来调用父类的构造方法,无论我们写不写,它都会存在。
例子
(2)父类中构造方法若是为有参构造,则子类必须要创建一个有参构造来继承父类的构造方法。
图片:
(3)匿名对象:

  • 对象只使用一次
  • 一般的使用对象:方法内的传值

7 final

final 可以修饰类、方法、变量,一般写在权限修饰符之后,若有static,最好写在static后面。

  • 修饰类: 类不能被继承
  • 修饰方法: 不能重写
  • 修饰变量: 不能被重新赋值(不能修改)
  • 常量:被final修饰的变量

8 抽象方法

  1. 抽象方法的使用最好使用新建子类对象,再调用。
  2. 可以定义方法,而不写方法体。
  3. 若父类中需要定义出来的公用方法,不能有方法体,子类必须要重写,则可使用抽象方法。
  4. abstract 用来修饰方法:方法没有方法体
  5. abstract:修饰类 修饰的类就是一个抽象类的抽象方法,需要放在抽象类中

9 接口

  • java类中只能单继承或者多层继承,但是一个类可以实现多个接口
  • 实现接口的关键字用 implements
    如:public class Animal implements A,B,C{ }
    注意
  1. 在java 8 以前接口中只能含有抽象方法,java8以后接口中可以含有静态方法(static)和默认方法(default)
  2. java 9 中接口中可以含有私有方法和私有静态方法
    接口和类的区别:
    (1)接口中不能实例化对象
    (2)接口中没有构造方法
    (3)接口中不能包含成员变量,除了static和final变量
    (4)接口不是被继承,而是被实现
    (5)接口支持多继承

10 多态

多态(Polymorphism)按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。引用Charlie Calverts对多态的描述——多态性是允许你将父对象设置成为一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说就是:允许将子类类型的指针赋值给父类类型的指针。

多态存在的三个必要条件:继承、重写、父类引用指向子类对象。

  • 使用多态调用方法、成员变量
    1 使用多态调用成员变量时,编译及运行都是看左边(子类及父类中都含有该成员变量,调用的是父类中的成员变量的值)
    2 使用多态调用方法时,编译看左边,执行看右边 (若父类中没有该方法,则会报错;若父类中含有该方法,则会调用子类中的同名方法)
    3 instance of关键字:判断一个对象是否是某个类的对象
技术选型 【后端】:Java 【框架】:springboot 【前端】:vue 【JDK版本】:JDK1.8 【服务器】:tomcat7+ 【数据库】:mysql 5.7+ 项目包含前后台完整源码。 项目都经过严格调试,确保可以运行! 具体项目介绍可查看博主文章或私聊获取 助力学习实践,提升编程技能,快来获取这份宝贵的资源吧! 在当今快速发展的信息技术领域,技术选型是决定一个项目成功与否的重要因素之一。基于以下的技术栈,我们为您带来了一份完善且经过实践验证的项目资源,让您在学习和提升编程技能的道路上事半功倍。以下是该项目的技术选型和其组件的详细介绍。 在后端技术方面,我们选择了Java作为编程语言。Java以其稳健性、跨平台性和丰富的库支持,在企业级应用中处于领导地位。项目采用了流行的Spring Boot框架,这个框架以简化Java企业级开发而闻名。Spring Boot提供了简洁的配置方式、内置的嵌入式服务器支持以及强大的生态系统,使开发者能够更高效地构建和部署应用。 前端技术方面,我们使用了Vue.js,这是一个用于构建用户界面的渐进式JavaScript框架。Vue以其易上手、灵活和性能出色而受到开发者的青睐,它的组件化开发思想也有助于提高代码的复用性和可维护性。 项目的编译和运行环境选择了JDK 1.8。尽管Java已经推出了更新的版本,但JDK 1.8依旧是一种成熟且稳定的选择,广泛应用于各类项目中,确保了兼容性和稳定性。 在服务器方面,本项目部署在Tomcat 7+之上。Tomcat是Apache软件基金会下的一个开源Servlet容器,也是应用最为广泛的Java Web服务器之一。其稳定性和可靠的性能表现为Java Web应用提供了坚实的支持。 数据库方面,我们采用了MySQL 5.7+。MySQL是一种高效、可靠且使用广泛的关系型数据库管理系统,5.7版本在性能和功能上都有显著的提升。 值得一提的是,该项目包含了前后台的完整源码,并经过严格调试,确保可以顺利运行。通过项目的学习和实践,您将能更好地掌握从后端到前端的完整开发流程,提升自己的编程技能。欢迎参考博主的详细文章或私信获取更多信息,利用这一宝贵资源来推进您的技术成长之路!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值