首页 > 编程语言 >Java基础——面向对象

Java基础——面向对象

时间:2024-11-09 13:50:14浏览次数:3  
标签:Java 子类 基础 面向对象 Student test 父类 方法 public

1. 面向过程&面向对象

1.1. 面向过程

是一种线性的,第一步做什么,第二步做什么......

适合处理简单的问题。

1.2. 面向对象

运用分类的思维模式,思考问题要先进性哪些分类,然后对这些类进行单独思考。

适合处理复杂的问题。

对于复杂的问题,需要从宏观的整体上进行分析,需要使用面向对象的思路分析整个系统。但具体到微观,仍需使用面向过程的思路去处理。

2. 什么是面向对象

本质:以类的方式组织代码,以对象进行组织(封装)数据。

对象,是具体的事物,类,是一个抽象的概念。

3. 类和对象的关系

3.1. 类

类是一种抽象的数据类型,他是对某一事物进行整体描述/定义,但并不能代表一个具体的事物。

3.2. 对象

对象的抽象概念的具体实现

4. 创建与初始化对象

使用new 关键字进行对象的创建,对象的属性会被初始化为默认值。

5. 构造器/构造方法

  1. 使用new关键字,本质上是调用构造器,用于初始化值
  2. 构造器,必须和类名相同,必须没有返回值,也不能写void
  3. 分为无参构造器和有参构造器,一旦定义了有参构造,必须显示的定义无参构造
  4. alt + insert 生成构造器快捷键

6. 面向对象的三大特性

6.1. 封装

  1. 高内聚:类的内部数据操作细节由自己完成,不允许外部干涉。
  2. 低耦合:仅暴露少量的方法给外部使用。
  3. 属性私有,get/set
  4. 意义:

        4.1. 提高安全性,保护数据

        4.2. 隐藏了代码的实现细节

        4.3. 统一接口

        4.4. 增加了系统的可维护性

6.2. 继承

  1. 继承的本质是对某一批类的抽象,如老师和学生类可以抽象为人类
  2. 使用extends关键字进行扩展,子类扩展父类,子类 is a 父类
  3. Java中只有单继承,没有多继承
  4. 子类会继承父类的所有除private的属性和方法
  5. ctrl + H打开继承树的快捷键
  6. Java中所有的类,都直接或间接的继承Object类
  7. super关键字,用于在子类中访问父类的属性this关键字,调用自己的属性和方法。
  8. 实例化子类会先默认调用父类的构造器,且必须放在构造方法的第一个
  9. 方法重写,需要有继承关系,子类重写父类

        a. 方法名必须相同,参数列表相同。

        b. 修饰符的范围可以扩大,但不能缩小(public > protected > default > private)

        c. 抛出的异常,范围只能缩小,不能扩大

        d. 父类的引用可以指向子类

        e. 只能重写非静态方法

// 主类
public static void main(String[] args) {
    A a = new A();
    a.test(); // A=>test  如果是static方法 输出A=>test
    B b = new A();
    b.test();  //  A=>test 如果是static方法 输出B=>test
}
// 父类
public class B {
    public void test(){
        System.out.println("B=>test");
    }
}
// 子类
public class A extends B{
    public void test(){
        System.out.println("A=>test");
    }
}

6.3. 多态

  1. 同一方法可以根据发送对象的不同而采用多种不同的行为方式
  2. 一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多
  3. 多态是方法的多态,没有属性的多态
// 父类
public class Person {
    public void run(){
        System.out.println("Person");
    }
}
// 子类
public class Student extends Person{
    @Override
    public void run() {
        System.out.println("Student");
    }
    public void test(){
        System.out.println("Student => test");
    }
}
// 主方法
public static void main(String[] args) {
        Student s1 = new Student();
        s1.run();  // Student
        s1.test(); // Student => test Student能调用自己和继承自父类的方法
        // 父类型,可以指向子类,但不能调用子类的方法
        Person s2 = new Student();
        s2.run();  // Student 父类方法被重写

        // 对象能执行哪些方法,主要看左边的类型,和右边关系不大
    }
  1. 存在条件:必须有继承关系,并进行方法重写,父类的引用指向子类对象。

6.4. instanceof与类型转换

  1. A instanceof B 判断 A 是否是 B的实例对象 返回值为true/false
  2. 把子类转化为父类,向上转型,自动完成,可能会丢失一些方法
  3. 把父类转换为子类,向下转型,强制转换

7. 抽象类

  1. 使用abstract修饰的类,叫做抽象类,不能new,只能靠子类实现
  2. 使用abstract修饰的方法,为抽象方法,只进行声明,非抽象子类必须进行实现
  3. 抽象方法必须在抽象类中,抽象类中也可以有非抽象方法

8. 接口

  1. 接口只有规范,接口的本质是契约
  2. 接口中的所有方法都是public abstract的,所有属性都是静态常量
  3. 使用interface进行定义
  4. 接口必须要有实现类,使用implements进行实现,实现了接口的类,必须重写接口中的方法
  5. extends只能进行单继承,但implements可以实现多个接口
  6. 接口不能被实例化,没有构造方法

标签:Java,子类,基础,面向对象,Student,test,父类,方法,public
From: https://blog.csdn.net/weixin_68853331/article/details/143633202

相关文章

  • Java基础——异常
    1.什么是异常程序在运行过程中发生的一些意外,叫做异常,如用户输入不合法,读取文件不存在等2.分类检查性异常:无法预见的,如要打开一个不存在的文件运行时异常:在编译时被忽略,可能被避免的,如函数a,b互相调用错误:脱离程序员控制,如栈溢出3.异常处理机制抛出异常捕获异常异常处......
  • Java JUnit从入门到精通:一篇文章带你掌握单元测试
    JavaJUnit从入门到精通:一篇文章带你掌握单元测试前言在现代软件开发中,单元测试已经成为保证代码质量的重要手段。作为Java生态中最流行的单元测试框架,JUnit提供了强大而灵活的测试功能。本文将从基础开始,逐步深入JUnit的各个方面,帮助你全面掌握Java单元测试。目录JUnit......
  • Java单元测试完全指南:JUnit从入门到精通
    Java单元测试完全指南:JUnit从入门到精通一、前言在现代软件开发中,单元测试已经成为保证代码质量的重要手段。本文将全面介绍Java最流行的单元测试框架JUnit,从基础概念到高级特性,帮助你掌握单元测试的核心技能。二、目录JUnit基础及环境搭建核心注解详解注解最佳实践高级测......
  • java卷上天,转行可以干什么?
      小刚是某名企里的一位有5年经验的高级Java开发工程师,每天沉重的的工作让他疲惫不堪,让他萌生出想换工作的心理,但是转行其他工作他又不清楚该找什么样的工作因为JAVA这几年的更新实在是太太太……快了,JAVA8都还没用多久,16都已经发布了。自从JAVA8发布了Lambda和St......
  • c++-有关输出、信息输入、趣味输入应用、运算符、变量、浮点数数据类型的基础知识
    C++是一种功能强大且广泛使用的编程语言,它可以用于开发各种类型的应用程序。在这篇文章中,我们将介绍C++程序的输出、信息输入、趣味输入应用、运算符、变量和浮点数数据类型的基础知识。目录输出信息输入趣味输入应用运算符变量浮点数数据类型题目题目1:解答1:题目2:......
  • StarUML建模工具安装学习与汉化最新零基础详细教程【一键式下载】(适用于Windows、MacO
    StarUML破解安装下载教程前言:StarUML破解与汉化安装下载教程,仅供学习研究和交流使用,禁止作为商业用途或其他非法用途!仓库作者:X1a0He,经仓库作者授权使用。目录StarUML破解安装下载教程1.下载准备1.1一键式准备【懒人准备】1.2学习式准备1.2.1学习准备2.window......
  • 深入Java多态机制:从原理到实现
    目录1.什么是多态?2.如何在Java中实现多态?2.1方法重写实现多态2.2接口实现多态3.Java接口中方法实现的支持3.1默认方法4.总结多态(Polymorphism)是面向对象编程(OOP)的核心概念之一。多态允许对象在不同的上下文中执行不同的行为,即同一操作可以在不同的对象中产生不......
  • 2024-2025-1 20241413 《计算机基础与程序设计》第七周学习总结
    这个作业属于哪个课程https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK07作业目标数组与链表基于数组和基于链表实现数据结构无序表与有序表树图子程序与参数--------作业......
  • 使用HTML、CSS和JavaScript创建动态雪人和雪花效果
    ✅作者简介:2022年博客新星第八。热爱国学的Java后端开发者,修心和技术同步精进。......
  • java基于SpringBoot的家电销售管理系统(源码+vue+部署文档+前后端分离等)
    收藏关注不迷路!!......