Java基础教程(五千字带你快速入门!)(二)

简介: Java基础教程(五千字带你快速入门!)(二)


Java基础教程(五千字带你快速入门!)(一):https://developer.aliyun.com/article/1555503

四. 面向对象


什么是面向对象?

  • 面向过程:根据解决问题的过程,直接设计系统。如 C 语言
  • 面向对象:将问题分解成多个对象,设计模块化、低耦合的系统。如 java 语言。
  • 特性:封装继承多态
  • 优点:使系统更加灵活,易维护、易复用、易扩展。

1. 类(Class)

✎. 类具有相同特征(同一类)事物的抽象描述,如人类,车类,学生类等

类可以理解为对象的类型:定义对象含有的变量和方法。

public class Car {     
    // 变量
    String brand;
    String description = "this is a car";
    // static 变量 
    static int number_of_car;  
    // 构造方法
    public car(String brand){        
        this.brand = brand;
    } 
    // 方法  
    public void go(String loc){
        System.out.print("go to" + loc);
    }   
    // static 方法
    void static showNum(){            
        System.out.print(number_of_car);
    }
    // 初始化块
    {       
        number_of_car;                                      
    }
    // static 初始化块
    static{                                                              
        number_of_car = 0;
    }
    // 内部类
    public class Warranty{
        public void repair(){
            System.out.print("repair");
        }    
    }
}
  • 变量

对象中存储的数据。

  • 方法

调用时执行的代码。

  • 初始化块

创建对象前自动执行的代码。

  • 内部类

定义在类中的类。

  • 构造方法

在创建对象时自动执行,不返回任何参数(先执行初始化块,再执行构造方法)。

未定义任何构造方法时,系统会自动添加无参构造方法。


终态声明

  • final 常量: 只能赋值一次,不可更改。
  • final 类: 不可被继承。
  • final 方法:(弃用)不可被继承。现在所有的 private 方法都隐式地指定为 final。

对于 final 常量,如果编译时就可以确定值,编译器会在编译时直接把这个变量替换成它的值。


静态声明


  • static 变量:该变量由该类的所有对象共享,不需要创建对象也可使用。
  • static 方法:允许直接访问,不需要创建对象也可被调用。如 main 方法。
  • static 初始化块:在创建类的第一个对象前自动执行(先执行静态初始化块,再执行初始化块)。
  • static 内部类:外部类对象共享,只能访问外部类的静态成员。

权限声明


  • public: 允许所有访问。
  • protected: 只允许本类、同包和子类访问。
  • [default]: 允许本类和同包访问。
  • private: 只允许本类访问。

2. 对象(Object)

✎. 对象是类的实例,以类为模版,在内存中创建出一个实际存在的实例.

对象包含了状态和行为,用户通过调用对象的方法、改变对象的属性来实现 java 程序的功能。

Car myCar = new Car("BMW");               // 创建对象       
me.brand = "Benz";                        // 修改对象变量                   
me.go("London");                          // 调用对象方法

3. 特征—封装

✎. 将类中的某些信息,使用不同的访问权限修饰符隐藏起来,不让外界直接访问操作,而是通过类中向外提供的特定方法访问,方便加入控制语句,主动权在类手中。

将类中成员变量私有化

public class Student {
    private String name;
    private int age ;
}

此时在其他类中不能任意访问成员变量,只能通过类中提供的特殊的方法进行访问.

将类中的方法私有化

单例模式让一个类在一个程序中只能创建一个对象,将类的构造方法私有化,外界不能随便用.

public class Window {
    //在类加载时,只创建了一个唯一对象
    static Window window = new Window();
 
    //将构造方法私有化,在外界不能随意调用
    private Window(){
 
    }
    //向外界提供可获得此对象的方法
    public  static  Window getWindow(){
        return window;
    }
 
    public static void main(String[] args) {
        System.out.println(Window.getWindow());
        System.out.println(Window.getWindow());
        System.out.println(Window.getWindow());
    }
 
}

可以看到,此例中创建的每个window的哈希值都相同于Window类中第一次创建的window

作用:可以有效的避免创建多个对象,达到在一个程序中只创建一个对象的作用。


4. 特征—继承

概念:将同一类事物中共性的属性和行为进行抽取,定义为一个类中(基类),其他类可以继承基类,就可以拥有基类中的功能,但不能使用基类中私有的内容。

作用:实现代码的复用性,以及可以在子类扩展自己特有的功能,而不影响其他类。

使用条件:只要符合is-a关系(什么是什么关系,比如苹果是水果),就可以使用继承,一个类只能直接继承一个类;而间接的可以继承多个类,称为继承的传递性,例如b继承a,然后c继承b,则c也继承了a.

继承的基本语法:


在创建类的时候在类名后使用extends关键字 继承别的类,子类继承父类后,拥有了父类的成员变量和成员方法,但不能访问私有成员。

public class Cat extends Animal{
   //Cat继承Animal的成员变量和成员方法,但不能访问私有成员
}

注意:当一个类没有显示继承其他类的时候默认继承object类,Object类是java类体系中最大的类,Object类之上再也没有别的类。

5. 特征—多态

前提:二者存在直接或间接的继承关系。

概念:用父类的引用变量指向子类对象,多态也称向上转型,将子类类型转为父类类型。

作用:用父类类型表示任意的子类类型对象,利于程序扩展。

Animal dog = new Dog();

两个时间段:

  • 编译期 --- 类型是父类类型
  • 运行期 --- 类型是具体的子类类型

口诀:编译看左边,运行看右边 ( 若是静态方法则都看左边(父类))

多态的存在意味着可以使用父类类型的引用来调用子类对象中重写的方法。

案例:

public class Animal {
    public void makeSound() {
        System.out.println("Animal is making a sound");
    }
}
public class Dog extends Animal{
    @Override//方法的重写
    public void makeSound() {
        System.out.println("Dog is barking");
    }
 
    public static void main(String[] args) {
        Animal dog = new Dog();//现在我们可以使用Animal类的引用来引用Dog对象
 
        dog.makeSound();  //输出Dog is barking
    }
}

○ 在上面的例子中,animal引用的是一个Dog对象,但是调用的是Dog类中重写makeSound()方法,这就是多态的效果!

相关文章
|
9天前
|
Oracle Java 关系型数据库
java 编程基础入门级超级完整版教程详解
这份文档是针对Java编程入门学习者的超级完整版教程,涵盖了从环境搭建到实际项目应用的全方位内容。首先介绍了Java的基本概念与开发环境配置方法,随后深入讲解了基础语法、控制流程、面向对象编程的核心思想,并配以具体代码示例。接着探讨了常用类库与API的应用,如字符串操作、集合框架及文件处理等。最后通过一个学生成绩管理系统的实例,帮助读者将理论知识应用于实践。此外,还提供了进阶学习建议,引导学员逐步掌握更复杂的Java技术。适合初学者系统性学习Java编程。资源地址:[点击访问](https://pan.quark.cn/s/14fcf913bae6)。
54 2
|
4月前
|
JavaScript NoSQL Java
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
276 96
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
|
5月前
|
存储 Java 索引
Java快速入门之数组、方法
### Java快速入门之数组与方法简介 #### 一、数组 数组是一种容器,用于存储同种数据类型的多个值。定义数组时需指定数据类型,如`int[]`只能存储整数。数组的初始化分为静态和动态两种: - **静态初始化**:直接指定元素,系统自动计算长度,如`int[] arr = {1, 2, 3};` - **动态初始化**:手动指定长度,系统给定默认值,如`int[] arr = new int[3];` 数组访问通过索引完成,索引从0开始,最大索引为`数组.length - 1`。遍历数组常用`for`循环。常见操作包括求和、找最值、统计特定条件元素等。
|
5月前
|
消息中间件 Java 数据库
自研Java框架 Sunrays-Framework使用教程「博客之星」
### Sunrays-Framework:助力高效开发的Java微服务框架 **Sunrays-Framework** 是一款基于 Spring Boot 构建的高效微服务开发框架,深度融合了 Spring Cloud 生态中的核心技术组件。它旨在简化数据访问、缓存管理、消息队列、文件存储等常见开发任务,帮助开发者快速构建高质量的企业级应用。 #### 核心功能 - **MyBatis-Plus**:简化数据访问层开发,提供强大的 CRUD 操作和分页功能。 - **Redis**:实现高性能缓存和分布式锁,提升系统响应速度。 - **RabbitMQ**:可靠的消息队列支持,适用于异步
自研Java框架 Sunrays-Framework使用教程「博客之星」
|
5月前
|
Java
Java快速入门之判断与循环
本文介绍了编程中的流程控制语句,主要包括顺序结构、判断结构(if语句和switch语句)以及循环结构(for、while和do...while)。通过这些语句可以精确控制程序的执行流程。if语句有三种格式,分别用于简单条件判断、二选一判断和多条件判断。switch语句适用于有限个离散值的选择判断,而循环结构则用于重复执行某段代码,其中for循环适合已知次数的情况,while循环适合未知次数但有明确结束条件的情况,do...while则是先执行后判断。文中还提供了多个示例和练习,帮助读者理解并掌握这些重要的编程概念。
|
5月前
|
Java
Java快速入门之类、对象、方法
本文简要介绍了Java快速入门中的类、对象和方法。首先,解释了类和对象的概念,类是对象的抽象,对象是类的具体实例。接着,阐述了类的定义和组成,包括属性和行为,并展示了如何创建和使用对象。然后,讨论了成员变量与局部变量的区别,强调了封装的重要性,通过`private`关键字隐藏数据并提供`get/set`方法访问。最后,介绍了构造方法的定义和重载,以及标准类的制作规范,帮助初学者理解如何构建完整的Java类。
|
6月前
|
移动开发 前端开发 Java
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
JavaFX是Java的下一代图形用户界面工具包。JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序。 JavaFX允许开发人员快速构建丰富的跨平台应用程序,允许开发人员在单个编程接口中组合图形,动画和UI控件。本文详细介绍了JavaFx的常见用法,相信读完本教程你一定有所收获!
5808 3
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
|
5月前
|
Java 数据库连接 数据处理
探究Java异常处理【保姆级教程】
Java 异常处理是确保程序稳健运行的关键机制。它通过捕获和处理运行时错误,避免程序崩溃。Java 的异常体系以 `Throwable` 为基础,分为 `Error` 和 `Exception`。前者表示严重错误,后者可细分为受检和非受检异常。常见的异常处理方式包括 `try-catch-finally`、`throws` 和 `throw` 关键字。此外,还可以自定义异常类以满足特定需求。最佳实践包括捕获具体异常、合理使用 `finally` 块和谨慎抛出异常。掌握这些技巧能显著提升程序的健壮性和可靠性。
85 4
|
5月前
|
存储 移动开发 算法
【潜意识Java】Java基础教程:从零开始的学习之旅
本文介绍了 Java 编程语言的基础知识,涵盖从简介、程序结构到面向对象编程的核心概念。首先,Java 是一种高级、跨平台的面向对象语言,支持“一次编写,到处运行”。接着,文章详细讲解了 Java 程序的基本结构,包括包声明、导入语句、类声明和 main 方法。随后,深入探讨了基础语法,如数据类型、变量、控制结构、方法和数组。此外,还介绍了面向对象编程的关键概念,例如类与对象、继承和多态。最后,针对常见的编程错误提供了调试技巧,并总结了学习 Java 的重要性和方法。适合初学者逐步掌握 Java 编程。
101 1