Java类的概念|包括封装、继承、多态|以及成员方法、权限修饰符、this关键字等类的相关的概念知识|Java必学知识点

简介: 继承的图形化概念:用最形象的图像来说明继承的概念其实很简单,就拿三角形和等腰三角形和等边三角形来说 等腰三角形和等边三角形都具有三角形的性质就是三个角三条边,那么三角形就是父类,等腰三角形和等边三角形就是三角形的子类,然而等边三角形是特殊的等腰三角形,所以在等腰三角形和等边三角形两者之间,等腰三角形是父类,等边三角形是子类!

🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝

🥇博主昵称:Jovy.

🍟博客主页Jovy.的博客

🥗感谢点赞👍评论🃌

⚇很方便的在线编辑器:Lightly

让我们一起在写作中记录学习吧!

image.gif编辑

目录

前言

什么是类?我对类的理解

类的继承、封装、多态

类的封装

类的继承

类的多态

成员方法、权限修饰符、this关键字

成员方法

权限修饰符

this关键字

第一种作用

第二种作用

文末总结


前言

🎃Java是一个专门的面向对象的语言,在现在还是受到很多人的喜爱,Java工程师是招聘需求最大的岗位 学好Java也是一个专业工程师的必备技能,在面向对象中 类是很重要的,所以本篇文章将会为大家讲解类以及类的相关知识 为大家打好基础!

编辑

什么是类?我对类的理解

🎃在一开始我学Python的时候遇到了类与对象 在当时我就听说过许多的说法,而我比较认同一个观点:类是一个图纸,而对象是一个成品!这是类与对象的关系!

类是对于一类事物的归纳,而不是单个事物。就拿狗这一类来举例,类就是封装了狗属性和行为,比如狗的属性有品种、大小、颜色、年龄,而他的行为有吃、跑、睡等,拥有这一系列属性和行为的统归为一类!

编辑

类的继承、封装、多态

🎃继承、封装、多态是面向对象设计程序的特点,通过这些特点,我们可以更好的编译程序,使程序编译更加方便

类的封装

🎃封装是面向对象编程的核心思想。通过类来将对象的属性和行为进行封装。通过封装可以达到对用户隐藏细节。封装保证了类内部数据结构的完整性,使用类的用户不能直接操作类的数据结构,避免类内部的数据安全,提高了程序可维护性。封装后其他程序只需通过封装的类所提供的接口进行使用,不需要了解类的内部的内容!

隐藏的细节就类似于你使用电脑键盘,你只要知道如何使用即可,不需要知道键盘的内部工作原理,这个工作原理就是类所封装的细节所在

编辑

类的继承

🎃类的继承是程序设计里面一个很重要的概念!利用继承,可以使我们程序设计的时间大大缩短,使得开发速度增加,也可以避免代码过多的问题!

  • 继承的概念:继承就是由子类继承父类的属性和行为,并且使用 当然也可以另外添加属性和行为,这个说法是最浅显易懂的!
  • 继承的图形化概念:用最形象的图像来说明继承的概念其实很简单,就拿三角形和等腰三角形和等边三角形来说 等腰三角形和等边三角形都具有三角形的性质就是三个角三条边,那么三角形就是父类,等腰三角形和等边三角形就是三角形的子类,然而等边三角形是特殊的等腰三角形,所以在等腰三角形和等边三角形两者之间,等腰三角形是父类,等边三角形是子类!

继承通过extends来实现

package eee;
class Animal {//声明一个动物类
  String name;//定义动物的属性如名字 ,年龄,品种
  int age;
  String kind;
  public void eat () {//定义一个吃的方法
    System.out.println("吃东西");
  }
}
class Dog extends Animal{    //定义一个狗的类来继承动物类
}
class Cat extends Animal{    //定义一个猫的类来继承动物类
}
public class Ass {
  public static void main(String[] args) {
    Dog dog = new Dog();    //实例化一个狗的对象
    dog.name = "大黄";    //可以发现狗的对象可以使用动物类中的属性变量进行赋值
    dog.age = 3;
    dog.eat();    //也可以调用动物类中的成员方法
    System.out.println(dog.name);
    System.out.println(dog.age);
    Cat cat = new Cat();
        cat.name = "大橘";
        cat.age = 2;
    cat.eat();
  }
}

编辑以上代码就很形象的解释了继承的概念!

类的多态

🎃多态的概念其实很简单,简单明了的说就是,同一个接口有多种不同的作用。例如你在使用f5的时候在网页中是刷新,但是在Python环境中却是代码运行的键,同一个接口有多个作用那他就是多态。

多态中必然包含继承、重写(下图取自菜鸟教程帮助理解)

编辑

在不同的子类调用父类的相同方法显示不同结果就是多态的主要特性

class Shape {
    void draw() {}
}
class Circle extends Shape {
    void draw() {
        System.out.println("Circle.draw()");
    }
}
class Square extends Shape {
    void draw() {
        System.out.println("Square.draw()");
    }
}
class Triangle extends Shape {
    void draw() {
        System.out.println("Triangle.draw()");
    }
}

成员方法、权限修饰符、this关键字

🎃成员方法、权限修饰符、this关键字在类的操作过程中使用十分频繁,是类中必不可缺的一部分,学好他们能让我们类的学习更方便!

成员方法

🎃很简单,方法是放在类的大括号内部的,如图所示!编辑

package eee;
public class This1 {
  public void kali(int aa){   //这是一个kali方法,返回类型为void,所以不能使用return
  }
  public static int[] linux(int[] aa) {   //这是一个linux方法,返回一个数组,返回值使用return
    return aa;
  }
  public static void main(String[] args) {
    // TODO 自动生成的方法存根
  }
}

权限修饰符

🎃看标题也是十分容易理解的,权限修饰符就是使这个方法或者是这个类赋予一定的访问权限,以此来达到限制访问的目的,那么我们就要用到权限修饰符!今天呢我们要学习的是三个比较基础的权限修饰符private、protected以及public

本类 同一个包下(其他类和子类) 不同包下(其他类和子类)
public 可见 可见 可见
protected 可见 可见 不可见
private 可见 不可见 不可见

注意:如果声明类时三者修饰符都未使用默认为public,则这个类预设为包存取范围,即只有一个包中的类可以访问这个类的成员方法或成员方法

this关键字

🎃this关键字的作用分为两个:第一个就是调用类的变量,在类的成员呢变量和参数变量重名的时候就要用到。第二个就是调用类的构造方法,用于两个相同的成员方法

第一种作用

显而易见,this后的name变量是成员变量,而后面的是形式参数

编辑

若按照以下代码,则输出的是形式参数传入的值,这样我们就不能调用成员变量,所以我们要用到this关键字编辑

编辑

package eee;
public class Eggcake {
  String name = "abc";
  public void showd(String name) {
  System.out.println(this.name);  //我们会发现这里的name和成员变量的name同一个颜色,说明他对成员变量进行了调用
  }
  public static void main(String args[]) {
  Eggcake e1 = new Eggcake();
  e1.showd("123");
  }
}

第二种作用

第二个作用就是调用其他方法的构造方法编辑

package eee;
public class Jovy {
  int jovy;
  public Jovy(int jovy) {
    this.jovy = jovy;
    System.out.println("Jovy有"+this.jovy+"个");
  }
  public Jovy() {
    this(1);
  }
  public static void main(String[] args) {
    Jovy a1 = new Jovy(5);  //因为上方为构造方法,所以实例化即可调用
    Jovy a2 = new Jovy(); //查看结果发现已经对构造方法进行调用
    // TODO 自动生成的方法存根
  }
}

文末总结

  • 多态的前提:必须有继承和重写
  • this关键字有两个用途:调用成员变量、调用构造方法
  • 权限修饰符不写默认为public

本篇文章是对Java类基础进行总结归纳,更好的辅助Java学习

编辑


目录
相关文章
|
6天前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
|
10天前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
50 4
|
11天前
|
Java 编译器 开发者
Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面
本文探讨了Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面,帮助开发者提高代码质量和程序的健壮性。
26 2
|
8天前
|
安全 Java 测试技术
Java并行流陷阱:为什么指定线程池可能是个坏主意
本文探讨了Java并行流的使用陷阱,尤其是指定线程池的问题。文章分析了并行流的设计思想,指出了指定线程池的弊端,并提供了使用CompletableFuture等替代方案。同时,介绍了Parallel Collector库在处理阻塞任务时的优势和特点。
|
17天前
|
安全 Java
java 中 i++ 到底是否线程安全?
本文通过实例探讨了 `i++` 在多线程环境下的线程安全性问题。首先,使用 100 个线程分别执行 10000 次 `i++` 操作,发现最终结果小于预期的 1000000,证明 `i++` 是线程不安全的。接着,介绍了两种解决方法:使用 `synchronized` 关键字加锁和使用 `AtomicInteger` 类。其中,`AtomicInteger` 通过 `CAS` 操作实现了高效的线程安全。最后,通过分析字节码和源码,解释了 `i++` 为何线程不安全以及 `AtomicInteger` 如何保证线程安全。
java 中 i++ 到底是否线程安全?
|
4天前
|
安全 Java 开发者
深入解读JAVA多线程:wait()、notify()、notifyAll()的奥秘
在Java多线程编程中,`wait()`、`notify()`和`notifyAll()`方法是实现线程间通信和同步的关键机制。这些方法定义在`java.lang.Object`类中,每个Java对象都可以作为线程间通信的媒介。本文将详细解析这三个方法的使用方法和最佳实践,帮助开发者更高效地进行多线程编程。 示例代码展示了如何在同步方法中使用这些方法,确保线程安全和高效的通信。
23 9
|
7天前
|
存储 安全 Java
Java多线程编程的艺术:从基础到实践####
本文深入探讨了Java多线程编程的核心概念、应用场景及其实现方式,旨在帮助开发者理解并掌握多线程编程的基本技能。文章首先概述了多线程的重要性和常见挑战,随后详细介绍了Java中创建和管理线程的两种主要方式:继承Thread类与实现Runnable接口。通过实例代码,本文展示了如何正确启动、运行及同步线程,以及如何处理线程间的通信与协作问题。最后,文章总结了多线程编程的最佳实践,为读者在实际项目中应用多线程技术提供了宝贵的参考。 ####
|
4天前
|
监控 安全 Java
Java中的多线程编程:从入门到实践####
本文将深入浅出地探讨Java多线程编程的核心概念、应用场景及实践技巧。不同于传统的摘要形式,本文将以一个简短的代码示例作为开篇,直接展示多线程的魅力,随后再详细解析其背后的原理与实现方式,旨在帮助读者快速理解并掌握Java多线程编程的基本技能。 ```java // 简单的多线程示例:创建两个线程,分别打印不同的消息 public class SimpleMultithreading { public static void main(String[] args) { Thread thread1 = new Thread(() -> System.out.prin
|
7天前
|
Java
JAVA多线程通信:为何wait()与notify()如此重要?
在Java多线程编程中,`wait()` 和 `notify()/notifyAll()` 方法是实现线程间通信的核心机制。它们通过基于锁的方式,使线程在条件不满足时进入休眠状态,并在条件满足时被唤醒,从而确保数据一致性和同步。相比其他通信方式,如忙等待,这些方法更高效灵活。 示例代码展示了如何在生产者-消费者模型中使用这些方法实现线程间的协调和同步。
21 3
|
7天前
|
Java
java小知识—进程和线程
进程 进程是程序的一次执行过程,是系统运行的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。简单来说,一个进程就是一个执行中的程序,它在计算机中一个指令接着一个指令地执行着,同时,每个进程还占有某些系统资源如CPU时间,内存空间,文件,文件,输入输出设备的使用权等等。换句话说,当程序在执行时,将会被操作系统载入内存中。 线程 线程,与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中产生多个线程。与进程不同的是同类的多个线程共享同一块内存空间和一组系统资源,所以系统在产生一个线程,或是在各个线程之间做切换工作时,负担要比
17 1