首页 > 编程语言 >Java面向对象程序设计基础知识

Java面向对象程序设计基础知识

时间:2023-01-16 17:22:35浏览次数:67  
标签:Java 子类 arraylist 接口 基础知识 面向对象 抽象类 父类 方法

Java面向对象程序设计

Java基础语法

  • 类(class):类是一个模块,描述一类对象的行为和状态

  • 对象:类的一个实例,有状态和行为,例如:一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等

  • 方法(函数):方法就是行为,一个类可以有很多方法。逻辑运算、数据修改以及所有动作都是在方法中完成的。
  • 实例变量(int float bool):每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定。
    • 局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
    • 成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问
    • 类变量:类变量也声明在类中,方法体之外,但必须声明为 static 类型

修饰符(关键字)

  • 访问控制修饰符 : default, public , protected, private
  • 非访问控制修饰符 : final, abstract, static, synchronized

变量

  • 局部变量
  • 类变量(静态变量)
  • 成员变量(非静态变量)

enum枚举

枚举限制变量只能是预先设定好的值。使用枚举可以减少代码中的 bug。

例如,我们为果汁店设计一个程序,它将限制果汁为小杯、中杯、大杯。这就意味着它不允许顾客点除了这三种尺寸外的果汁。

enum Color
{
    RED, GREEN, BLUE;
}
 
public class Test
{
    // 执行输出结果
    public static void main(String[] args)
    {
        Color c1 = Color.RED;
        System.out.println(c1);
    }
}

继承

继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

为什么需要继承

子类继承父类时,就具有父类当中的属性和方法,子类就不会存在重复的代码,维护性也提高,代码也更加简洁,提高代码的复用性(复用性主要是可以多次使用,不用再多次写同样的代码)

类的继承格式

class 父类 {
}
 
class 子类 extends 父类 {
}

继承的特性

  • 子类拥有父类非 private 的属性、方法。
  • 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
  • 子类可以用自己的方式实现父类的方法。
  • Java 的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如 B 类继承 A 类,C 类继承 B 类,所以按照关系就是 B 类是 C 类的父类,A 类是 B 类的父类,这是 Java 继承区别于 C++ 继承的一个特性。
  • 提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系越紧密,代码独立性越差)。

抽象类

在 Java 中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口。

抽象类的声明

public(可见度) abstract class name(接口名称)
{

}

抽象方法

抽象方法没有定义,方法名后面直接跟一个分号,而不是花括号

该方法的具体实现由它的子类确定类确定

public abstract class People
{
   private String name;
   private String address;
   
   public abstract void PrintInfo();
   
   //其余代码
}
  1. 抽象类不能被实例化(初学者很容易犯的错),如果被实例化,就会报错,编译无法通过。只有抽象类的非抽象子类可以创建对象。

  2. 抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。

  3. 抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现也就是方法的具体功能。

  4. 构造方法,类方法(用 static 修饰的方法)不能声明为抽象方法。

  5. 抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。

Interface接口

在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法

一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。

接口的声明

public(可见度) interface name(接口名称) [extends 其他的接口名] {
        // 声明变量
        // 抽象方法
}

接口的实现

当类实现接口的时候,类要实现接口中所有的方法。否则,类必须声明为抽象的类。

类使用implements关键字实现接口。在类声明中,Implements关键字放在class声明后面。

实现一个接口的语法,可以使用这个公式:

... implements 接口名称[, 其他接口名称, 其他接口名称..., ...] ...

其他

关于Java Scanner类

想使用此类需要加入import java.util.Scanner;

使用方法

创建一个 Scanner 对象命名为 in

Scanner in = new Scanner(System.in);

进行输入并且存储

String str = in.next();

想用此方法进行输入时,为了保证严谨性,可能有部分人会在使用一次后使用下方的代码进行关掉,下次再使用时重新打开

in.Close();

其实输入是不用自己关闭的,因为程序在运行到最后时会自动关闭,如果想手动关闭输入的话,切记需要在最后使用此代码(整个程序的最后)

next() 与 nextLine() 区别

next():

  • 1、一定要读取到有效字符后才可以结束输入。
  • 2、对输入有效字符之前遇到的空白(空格),next() 方法会自动将其去掉。
  • 3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
  • next() 不能得到带有空格的字符串。

nextLine():

  • 1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
  • 2、可以获得空白(空格)

ArrayList 类

此类能动态地修改数组,它提供的所有方法都是 static 修饰静态的(static 修饰的方法可以直接通过类名调用),所以可以直接调用。

想使用此类必须加入 java.util.Arrays;

创建 ArrayList

ArrayList<E> objectName =new ArrayList<>();

  • E : 泛型数据类型,用于设置 objectName 的数据类型,只能为引用数据类型
  • objectName : 对象名。

ArrayList 方法

add() 将元素插入到指定位置的 arraylist 中
addAll() 添加集合中的所有元素到 arraylist 中
clear() 删除 arraylist 中的所有元素
clone() 复制一份 arraylist
contains() 判断元素是否在 arraylist
get() 通过索引值获取 arraylist 中的元素
indexOf() 返回 arraylist 中元素的索引值
removeAll() 删除存在于指定集合中的 arraylist 里的所有元素
remove() 删除 arraylist 里的单个元素
size() 返回 arraylist 里元素数量
isEmpty() 判断 arraylist 是否为空
subList() 截取部分 arraylist 的元素
set() 替换 arraylist 中指定索引的元素
sort() 对 arraylist 元素进行排序
toArray() 将 arraylist 转换为数组
toString() 将 arraylist 转换为字符串
ensureCapacity() 设置指定容量大小的 arraylist
lastIndexOf() 返回指定元素在 arraylist 中最后一次出现的位置
retainAll() 保留 arraylist 中在指定集合中也存在的那些元素
containsAll() 查看 arraylist 是否包含指定集合中的所有元素
trimToSize() 将 arraylist 中的容量调整为数组中的元素个数
removeRange() 删除 arraylist 中指定索引之间存在的元素
replaceAll() 将给定的操作内容替换掉数组中每一个元素
removeIf() 删除所有满足特定条件的 arraylist 元素
forEach() 遍历 arraylist 中每一个元素并执行特定操作

标签:Java,子类,arraylist,接口,基础知识,面向对象,抽象类,父类,方法
From: https://www.cnblogs.com/shadow-fy/p/17055946.html

相关文章

  • java.3 Java数据类型1
    数据类型讲解Java属于强类型语言即要求变量的使用要严格符合规定,所有变量都必须严格定义以后才能使用优点:安全性高缺点:速度慢(相对而言)Java数据类型分为引用类......
  • 【学懂Java】(三)数组
    一.概述a.数组是相同类型数据的有序集合:相同类型的若干个数据,按照一定先后次序排列组合而成。其中,每一个数据称作一个数组元素每个数组元素可以通过一个下标来访问它们.b......
  • Java控制台摸鱼看书大法
    “本代码由摸鱼本鱼提供”老板:控制台虽然好看,也不能看一整天啊! (因为小说章节不准确,定位章节可能会有偏差,这个只能自己调整了)效果图:    废话不多说,直接上代......
  • JavaScript async/await 的用法以及它与 Promise 的区别
    async/await是JavaScript中的语法糖,用于简化异步代码的编写。它允许你在异步代码中使用同步风格的语法,使代码更易于阅读和维护。用法:使用关键字async声明一个异步......
  • 图片上传报错 java.lang.IllegalArgumentException: image == null!
    记录一次报错java.lang.IllegalArgumentException:image==null!jdk版本:openjdk1.8问题复现:使用  ImageIO.read(newFileInputStream(imgPath)) 进行图片读取时,......
  • 算法学习01—Java底层的正整数与负整数
    算法学习01—Java底层的正整数与负整数本节课学到的知识编写一个方法,打印出int类型数字的二进制长什么样为什么int类型的最大值是2^32-1,最小值是-2^32......
  • JavaBean
      ......
  • Day6: 初识面向对象 / 方法回顾与加深 / 对象的创建分析 / 面向对面的三大特性 / 抽象
    1.初识面向对象1.面向过程&面向对象面向过程思想步骤清洗简单,第一步做什么,第二步做什么......面向过程适合处理一些较为简单的问题面向对象思想物以类聚,分......
  • 2022网鼎杯ezjava分析
    文章首发于sec-inhttps://www.sec-in.com/article/2042拿到题目代码只有一个EvilController控制器,获取base参数值然后base64解码后带入readObject,很明显的一个反序列化......
  • javascript中怎么将字符串转换为函数
    要将字符串转换为函数“ eval() ”,应使用方法。此方法将字符串 作为参数并将其转换为函数。语法eval(string);示例在以下示例中,在字符串本身中,使用函数分配了一个名......