首页 > 编程语言 >Java的基础知识

Java的基础知识

时间:2023-12-29 20:55:39浏览次数:29  
标签:Java 继承 子类 接口 基础知识 父类 方法

一、Java类的封装

  1. 访问修饰符:在Java中,可以使用访问修饰符来限制对类、类的成员变量和方法的访问权限。常用的访问修饰符包括:

    • public:公共访问修饰符,表示可以被任何类访问。
    • private:私有访问修饰符,表示只能在当前类内部访问。
    • protected:受保护访问修饰符,表示只能在当前类及其子类、同一个包内的类访问。
    • 默认(无修饰符):默认访问修饰符,表示只能在同一个包内的类访问。
  2. 成员变量的封装:通过将成员变量声明为私有(private),并提供公共的getter和setter方法来控制对成员变量的访问和修改。这样可以隐藏类的内部细节,防止外部直接访问和修改数据。

  3. 方法的封装:将实现某一功能的代码封装在方法中,并通过访问修饰符来控制方法的访问权限。公共的方法可以被其他类调用,而私有的方法只能在当前类内部调用。

  4. 数据的验证和保护:通过封装,可以在setter方法中添加数据验证的逻辑,确保设置的数据符合特定的规则或条件。例如,可以对年龄进行范围检查,确保设置的年龄在合法范围内。

  5. 封装的优点:封装可以提高代码的安全性和可维护性。隐藏类的内部实现细节,减少外部代码对内部实现的依赖,提高代码的可复用性。同时,通过公共的方法来操作数据,可以对数据进行控制和验证,避免直接访问和修改数据导致的错误或不符合逻辑的操作。

总之,封装是一种重要的面向对象编程概念,通过访问修饰符、成员变量和方法的封装,以及数据的验证和保护,可以提高代码的安全性、可维护性和可复用性。

二、Java类的继承

  1. 继承的基本概念:Java中的继承是一种面向对象编程的概念,它允许一个类从另一个类中继承属性和方法。被继承的类称为父类或超类(superclass),继承的类称为子类或派生类(subclass)。

  2. 继承的语法:在Java中,使用关键字extends来实现继承关系。子类通过继承父类的属性和方法来实现代码重用,同时可以根据需要增加新的属性和方法。例如,下面的代码演示了如何创建一个子类:

    javaCopy Code
    public class SubClass extends SuperClass {
        // 子类的属性和方法
    }
    
  3. 继承的特点:继承是面向对象编程的三大特性之一,具有以下特点:

    • 子类拥有父类的非私有属性和方法。
    • 子类可以覆盖父类的方法,实现多态性。
    • 子类可以添加新的属性和方法,扩展父类的功能。
    • 子类可以继承多个父类的属性和方法,实现多重继承。
  4. 继承的优点:继承可以提高代码的重用性和可扩展性,避免重复编写相似的代码。通过继承,子类可以重用父类的属性和方法,并且可以根据需要添加新的功能。同时,继承也可以实现代码的抽象和封装,提高代码的可读性和可维护性。

  5. 继承的注意事项:在使用继承时,需要注意以下几个问题:

    • 子类只能继承非私有的属性和方法。
    • 子类无法直接访问父类的私有属性和方法。
    • 子类重写父类的方法时,必须具有相同的方法名、参数列表和返回类型。
    • 子类不能继承父类的构造方法,但是可以调用父类的构造方法来初始化父类的属性。
    • Java不支持多重继承,但是可以使用接口来实现多重继承的效果。

总之,继承是Java面向对象编程的重要概念,通过继承可以实现代码的重用和扩展,同时也可以实现代码的抽象和封装,提高代码的可读性和可维护性。

三、Java中的抽象类和接口

  1. 抽象类的基本概念:抽象类是一种不能被实例化的类,它通常作为其他类的父类存在,可以定义抽象方法和非抽象方法。抽象方法是一种没有实现的方法,必须在子类中被实现,否则子类也必须声明自身为抽象类。抽象类通过关键字abstract来定义。例如:

    javaCopy Code
    public abstract class Shape {
        // 抽象方法,需要在子类中实现
        public abstract double getArea();
        
        // 非抽象方法,可以在抽象类中实现
        public double getPerimeter() {
            return 0;
        }
    }
    
  2. 抽象类的特点:抽象类不能被实例化,只能作为其他类的父类存在;抽象类中可以包含抽象方法和非抽象方法;子类必须实现抽象方法才能被实例化。

  3. 接口的基本概念:接口是一种完全抽象的类,只包含抽象方法和常量,没有非抽象方法。接口通过关键字interface来定义。接口只描述类应该具有什么样的方法,但不涉及方法的具体实现。例如:

    javaCopy Code
    public interface Drawable {
        // 抽象方法,需要在实现类中实现
        void draw();
        
        // 常量
        int COLOR_RED = 1;
        int COLOR_BLUE = 2;
    }
    
  4. 接口的特点:接口是完全抽象的,不包含具体实现;接口中只能包含抽象方法和常量;一个类可以实现多个接口。

  5. 抽象类和接口的使用场景:抽象类通常用于描述一组相关的类,把共性的部分提取出来,保留必要的差异,让子类去实现具体的功能。接口通常用于描述一组规范或者协议,定义了一些方法的签名和常量,让实现类去实现具体的功能。

总之,抽象类和接口都是面向对象编程中的重要概念,它们分别用于描述类之间的继承关系和规范之间的实现关系。在使用时,抽象类通常用于描述一组相关的类,而接口通常用于描述一组规范或者协议。

四、Java中的多态

  1. 方法重写(Override):子类可以重写父类的方法,即在子类中重新定义一个与父类方法签名相同的方法。当使用父类引用指向子类对象时,调用该方法时将执行子类中的方法。这种情况下,编译器会根据引用变量的声明类型确定调用哪个方法。例如:

    javaCopy Code
    class Animal {
        public void makeSound() {
            System.out.println("Animal makes sound");
        }
    }
    
    class Dog extends Animal {
        @Override
        public void makeSound() {
            System.out.println("Dog barks");
        }
    }
    
    public class Main {
        public static void main(String[] args) {
            Animal animal = new Dog(); // 父类引用指向子类对象
            animal.makeSound(); // 调用的是子类的方法
        }
    }
    

    输出结果为:"Dog barks"

  2. 接口的多态性:一个类可以实现多个接口,从而具有多态性。当使用接口引用指向实现了该接口的类对象时,可以调用接口中定义的方法。这种情况下,编译器会根据接口类型确定调用哪个实现类的方法。例如:

    javaCopy Code
    interface Drawable {
        void draw();
    }
    
    class Circle implements Drawable {
        @Override
        public void draw() {
            System.out.println("Drawing a circle");
        }
    }
    
    class Rectangle implements Drawable {
        @Override
        public void draw() {
            System.out.println("Drawing a rectangle");
        }
    }
    
    public class Main {
        public static void main(String[] args) {
            Drawable drawable = new Circle(); // 接口引用指向实现类对象
            drawable.draw(); // 调用的是实现类的方法
        }
    }
    

    输出结果为:"Drawing a circle"

通过多态性,可以实现更灵活和可扩展的代码设计。它使得程序在运行时能够动态地适应不同对象的行为,提高了代码的可读性和可维护性。需要注意的是,多态性只适用于方法调用,并且在静态方法、私有方法和构造方法中不适用。

五、Java类的高级性主要包括以下几个方面:

  1. 封装性(Encapsulation):封装是面向对象编程的基本原则之一,它指的是将数据和操作数据的方法封装在一个类中,并对外部提供公共的访问接口。通过封装,可以隐藏类的内部实现细节,只暴露必要的接口,提高代码的安全性和可维护性。

  2. 继承性(Inheritance):继承是Java中实现代码重用和扩展的重要机制。通过继承,子类可以继承父类的属性和方法,并且可以添加自己独特的特性。继承可以形成类的层次结构,提高代码的可扩展性和灵活性。

  3. 多态性(Polymorphism):多态性是Java中面向对象编程的关键特性之一。多态性允许不同类型的对象对同一方法做出不同的响应。通过方法重写和接口实现,可以实现运行时的动态绑定,提高代码的灵活性和可扩展性。

  4. 抽象性(Abstraction):抽象是面向对象编程的重要概念,它指的是将具有相似特征和行为的对象抽象为类和接口。抽象类和接口可以定义抽象方法,这些方法没有具体的实现,需要由子类来实现。通过抽象,可以实现对一组相关类的抽象和封装,提高代码的模块化和可维护性。

  5. 接口性(Interface):接口是Java中定义规范的一种机制。接口定义了一组抽象方法,实现类必须实现这些方法。通过接口,可以实现代码的解耦和多重继承效果,提高代码的可扩展性和灵活性。

  6. 内部类(Inner Class):Java支持在一个类内部定义另一个类,这就是内部类。内部类可以访问外部类的成员,包括私有成员,实现更加紧密的类之间的关系,并提供更好的封装性。

  7. 泛型(Generics):Java的泛型机制允许在类和方法中使用类型参数,实现代码的通用性和类型安全性。通过泛型,可以编写更加通用的代码,提高代码的重用性和可读性。

这些高级特性使得Java类具有更强大的功能和灵活性,能够支持复杂的应用需求和模块化的代码设计。通过合理地运用这些特性,可以编写出高质量、可维护和可扩展的Java程序。

标签:Java,继承,子类,接口,基础知识,父类,方法
From: https://www.cnblogs.com/zc2023/p/17935658.html

相关文章

  • JavaWebDay6
    数据库:存储和管理数据的仓库数据库管理系统:DataBaseManagementSystem(DBMS),操纵和管理数据库的大型软件SQL:StructerQueryLanguage,操作关系型数据库的编程语言,定义了一套操作关系型数据库的统一标准关系型数据库 SQL简介  注意--注释内容 --与注释内容之间有......
  • JAVA语言基础内容2
    一.类的封装封装是面向对象编程中的一种重要概念,它指的是将类的内部数据和实现细节隐藏起来,只暴露必要的接口供外部使用。封装通过限制对类的直接访问,提高了代码的安全性和可维护性,并使得类的实现细节可以更灵活地变化而不影响外部代码。封装的关键点包括:访问控制:封装通过访......
  • 无涯教程-Java 正则 - MatchResult String group()函数
    java.time.MatchResult.group()方法返回与上一个匹配项匹配的输入子序列。Stringgroup()-声明Stringgroup()Stringgroup()-返回值与上一个匹配项匹配的(可能为空)子序列,为字符串形式。Stringgroup()-异常IllegalStateException-如果尚未尝试匹配,或者上一个匹......
  • 无涯教程-Java 正则 - MatchResult String group(int group)函数
    java.time.MatchResult.group(intgroup)方法返回在上一次匹配操作期间给定组捕获的输入子序列。Stringgroup(intgroup)-声明以下是java.time.MatchResult.group(intgroup)方法的声明。intgroup(intgroup)group  - 该匹配器模式中捕获组的索引。Stringgroup......
  • Java+SpringBoot+Maven+TestNG+httpclient+Allure+Jenkins实现接口自动化
    一、方案需求目标:测试左移,测试介入研发过程,验证单接口正常及异常逻辑选用工具:Java、SpringBoot、Maven、TestNG、httpclient、Allure、Jenkins方案:创建测试接口测试工程,参照研发设计文档和设计思路,编写正常及异常用例,直接调用服务端接口,覆盖接口逻辑和验证异常处理,提升接口健壮......
  • 无涯教程-Java 正则 - MatchResult int end(int group)函数
    java.time.MatchResult.end(intgroup)方法返回在此匹配期间给定组捕获的子序列的最后一个字符之后的偏移量。intend(intgroup)-声明intend(intgroup)group  - 该匹配器模式中捕获组的索引。intend(intgroup)-返回值最后一个字符匹配后的偏移量。intend(......
  • java基础语言期末复习
    一.类的封装1.类的封装是指将类的实现细节隐藏起来,仅向外部提供有限的接口进行访问。这样可以保护数据的安全性和完整性,同时也能够降低代码的耦合度。具体来说,类的封装可以通过以下方式实现:将类的成员变量设为私有属性,只能在类的内部访问。对于需要被外部访问的成员变量,可以......
  • ECharts 是一个使用 JavaScript 实现的开源可视化库¹²³⁴。它可以流畅地运行在 PC
    ECharts是一个使用JavaScript实现的开源可视化库¹²³⁴。它可以流畅地运行在PC和移动设备上,兼容当前绝大部分浏览器(如IE8/9/10/11,Chrome,Firefox,Safari等)²³⁴。ECharts底层依赖轻量级的Canvas类库ZRender¹²³,提供直观,生动,可交互,可高度个性化定制的数据可视化图表¹......
  • 无涯教程-Java 正则 - MatchResult int end()函数
    java.time.MatchResult.end()方法返回匹配的最后一个字符后的偏移量。intend()-声明intend()intend()-返回值最后一个字符匹配后的偏移量。intend()-异常IllegalStateException-如果尚未尝试匹配,或者先前的匹配操作失败。intend()-示例下面的示例显示jav......
  • Spring Boot 正式弃用 Java 8。。
    大家好,我是R哥。关注Spring框架的都知道,因为Spring6.0要求最低JDK17+,所以SpringBoot3.0也必须JDK17+了,但是3.0出来的时候,一站式生成项目还是可以选Java8的,如下图所示:这是Spring提供的一站式生成Spring应用的网站,这个网站可以帮助开发人员一键生成符合S......