手捏Java知识点

news2024/11/24 19:49:27

今天开始面向对象了

在这里插入图片描述

面向对象基础

    类:由属性和行为组成
        属性:在类中通过成员变量来体现
        行为:在类中通过成员方法来体现
        public class 类名{
            //成员变量
            变量1的数据类型 变量1;
            变量2的数据类型 变量2;
            ...
            //成员方法
            方法1;
            方法2;
            ...
        }

有几个重要的概念和特性需要了解。

在这里插入图片描述

类和对象
在Java中,类是描述具有相同属性和行为的对象的蓝图。通过定义类,可以创建
多个实例,即对象。对象是类的具体实现,并且可以使用其属性和方法来完成特
定的任务。
封装
封装是将数据和操作组合起来,以便通过类的接口访问它们。通过将数据字段隐
藏在类的内部,并提供公共方法来访问和修改数据,可以保护数据的完整性和安
全性。

在这里插入图片描述

继承
继承是指一个类获得另一个类的属性和方法。通过继承,子类可以重用父类的代
码,并且还可以添加自己的特定功能。在Java中,使用关键字extends实现继承
关系。
多态
多态是指一个对象可以表现出多种形态或类型。通过多态,可以使用统一的接
口来处理不同类型的对象,提高代码的可复用性和可拓展性。在Java中,多态
可以通过方法的重写和接口的实现来实现。
抽象类与接口
抽象类是无法被实例化的类,它可以包含抽象方法和非抽象方法。抽象方法只有
声明而没有具体实现,需要子类去实现。接口定义了一组方法的规范,任何类都
可以实现一个或多个接口。不同类之间通过继承抽象类或实现接口来共享代码
和行为。

在这里插入图片描述

除此之外还有其他一些与面向对象相关的概念,如构造函数、方法重载、访问修饰符等。理解这些基础知识也很重要。

代码示例

定义一个新的手机类并在这个类中使用

public class crj {
    public static void main(String[] args) {
        Phone p = new Phone();
        //使用成员变量
        System.out.println(p.brand);
        System.out.println(p.price);

        p.brand = "小米";
        p.price = 2999;

        System.out.println(p.brand);
        System.out.println(p.price);

        //使用成员方法
        p.call();
        p.sendPassage();
    }
}

新定义一个学生类,并在这个类中使用

public class crj {
   public static void main(String[] args) {
       Student s = new Student();
       //调用成员变量
       s.name="高启强";
       s.age=39;
       System.out.println(s.name+s.age);
       //调用成员方法
       s.study();
       s.doHomework();
   }
}
public class Student {
   //成员变量
   String name;
   int age;
   //private int age;

   public void setAge(int a) {
//        age = a;
       if (a < 0 || a > 120) {
           System.out.println("年龄有误");
       } else {
           age = a;
       }
   }

   //成员方法
   public void study() {
       System.out.println("好好学习");
   }

   public void doHomework() {
       System.out.println("多加练习");
       int j = 0;
   }

   public void show() {
       System.out.println(name + "," + age);
   }
   public String getName(){
       return name;
   }
   public int getAge(){
       return age;
   }
}

在这里插入图片描述

private关键字

    是一个权限修饰符
    可以修饰成员
    作用:保护成员不被别的类使用,
            被private修饰的成员只在本类中才能访问
    使用方法
        提供get变量名()用于获取成员变量的值,方法用public修饰
           set变量名(参数)用于设置成员变量的值方法用public修饰


	在Java中,private是一种访问修饰符(access modifier),用于控制类
	的成员(字段和方法)的可见性。具体来说,private修饰的成员只能在所
	属类的内部访问,而在类的外部是不可见的。

	使用private关键字可以实现封装(encapsulation)的概念,将类的内部
	数据和实现细节隐藏起来,只暴露必要的接口给外部使用。这样做的好处是
	可以提高代码的安全性和可维护性,防止外部代码直接访问类的私有成员,
	从而避免不经意间改变了类的内部状态。

下面演示了private关键字的使用:

public class Person {
   private String name;
   private int age;
   
   public Person(String name, int age) {
       this.name = name;
       this.age = age;
   }
   
   public void sayHello() {
       System.out.println("Hello, my name is " + name);
   }
   
   private void increaseAge() {
       age++;
   }
   
   public void celebrateBirthday() {
       increaseAge();
       System.out.println("Happy birthday! Now I'm " + age + " years old.");
   }
}
在上述代码中,name和age字段被声明为private,只能在Person类的内部访
问。sayHello方法是公有方法,可以被外部代码调用。increaseAge方法被声明
为private,只能在Person类的内部调用。
这意味着,当我们创建一个Person对象并调用celebrateBirthday方法时,
age的增加是在类的内部发生的,外部代码无法直接访问和更改age的值。
Person person = new Person("Alice", 25);
person.sayHello();  // 正确,输出:Hello, my name is Alice
person.increaseAge();  // 错误,无法调用私有方法
System.out.println(person.age);  // 错误,无法访问私有字段
person.celebrateBirthday();  // 正确,输出:Happy birthday! Now I'm 26 years old.

总之

private关键字用于限制类的成员的访问范围,只允许在所属类的内部访问。通
过使用private关键字,可以实现封装,提高代码的安全性和可维护性。

在这里插入图片描述

this关键字

主要有以下几个用途:

引用当前对象的实例变量
在类的方法内部,如果局部变量和实例变量同名,可以使用this关键字来指定访
问实例变量。例如:this.variableName。
调用当前对象的其他方法
在类的某个方法内部,可以使用this关键字来调用当前对象的其他方法。
例如:this.methodName()。
在构造方法中调用其他构造方法
在一个类中,可以定义多个构造方法,通过使用不同的参数列表进行重载。如果
一个构造方法需要调用另一个构造方法,可以使用this关键字。
例如:this(parameters)。

代码示例

public class crj {
    public static void main(String[] args) {
        Student2 s = new Student2();

        s.setName("林清玄");
        s.setAge(30);
        System.out.println(s.getName()+","+s.getAge());
    }
}
public class Student2 {
    private String name;
    private int age;

    public void setName(String name) {
        this.name = name;
    }
    public String getName(){
        return name;
    }

    public void setAge(int age) {
        this.age = age;
    }
    public int getAge(){
        return age;
    }
}

在这里插入图片描述

构造方法注意事项

    创建 如果没有定义,系统将给出一个默认的无参构造方法
          如果定义了,系统将不再提供默认构造方法
    重载 如果自定义了带参构造方法,还想使用无参构造方法,就必须再写
    		一个无参构造方法
    推荐 永远提供无参构造方法

	构造方法名称必须与类名完全相同,大小写也要匹配。

	构造方法没有返回类型,连 void 关键字也不需要。

	如果没有显式地定义构造方法,Java 会自动为类定义一个默认的无参构
	造方法。

	如果自定义了有参数的构造方法,Java将不会自动创建无参构造方法。这
	就意味着,如果需要创建一个对象,必须显式地提供一个无参构造方法。

	如果类中同时存在无参构造方法和有参构造方法,那么在创建对象时默认
	首选无参构造方法。

	构造方法可以重载,也就是说可以定义多个具有不同参数列表的构造方法,
	以应对不同的对象创建需求。

	在子类中,构造方法的第一行必须是调用父类的构造方法,否则编译器会自
	动添加默认的 super() 方法调用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/747882.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

百度iOS端长连接组件建设及应用实践

作者 | 百度消息中台团队 导读 在过去的十年里&#xff0c;移动端技术飞速发展&#xff0c;移动应用逐渐成为主要的便捷访问和使用互联网的方式&#xff0c;承接了越来越多的业务和功能&#xff0c;这也意味着对移动端和服务器之间的通信效率和稳定性提出了更高的要求。为了实现…

ellisys 过滤设备

1、通过关键字过滤 输入蓝牙名称关键字&#xff0c;比如下面输入的是BNCM Transmitter "*BNCM*" || Receiver "*BNCM*" 之后&#xff0c;所有与这个设备相关的信号都会抓取过滤出来 2、通过地址过滤 之后&#xff0c;所有与这个设备相关的信号都会抓取过…

港联证券-深夜,大利好!人民币暴拉超500点,全球股市大反攻

全球商场一夜狂欢。 美国通胀大降温&#xff0c;全球危险资产全线大涨。北京时间7月12日晚间&#xff0c;美国劳工统计局发布数据&#xff0c;美国6月CPI同比涨幅回落至3%&#xff0c;低于预期3.1%&#xff0c;接连第12个月下降&#xff0c;且为2021年3月以来最低。数据发布后&…

02 |「Android Studio 新建项目」

前言 新手入门安卓开发 文章目录 前言一、步骤一、步骤 New Project选择 Empty Activity1)Name:项目的名字; 2)Package name:项目的包名(项目的唯一标识); 3)Save location:项目的保存路径; 4)Language:

QT实现按钮开关Form窗体的效果

实现效果叙述如下&#xff1a; MainWindow中的按钮实现Form窗体的开关&#xff0c;Form窗体的关闭按钮禁用掉&#xff0c;只允许使用窗体按钮进行&#xff0c;且关闭MainWindow按钮时Form窗体随之关闭。 注意&#xff1a; 要想实现关闭MainWindow按钮时Form窗体随之关闭&#x…

【Android知识笔记】系统进程(一)

Android 系统进程有哪些 先来一个整体结构图从宏观上理解Android系统的进程结构布局: 这里我们简单总结一下: 系统的第一个进程其实是0号进程(又叫swapper进程/Idle进程) 0号进程fork出了1号进程(init进程)和2号进程(kthreadd进程) 1号进程是所有普通用户进程的祖先,2号进程…

Docker部署前后端分离项目

✅作者简介&#xff1a;大家好&#xff0c;我是Cisyam&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Cisyam-Shark的博客 &#x1f49e;当前专栏&#xff1a; 项目部署 ✨特色专栏&…

K8s生产环境常见问题处理、答疑(连载、不定期更新)

文章目录 K8s 常见问题处理、答疑[1] calico一直处于未就绪状态[2] 删除dashboard 一直卡在delete[3] k8s-dashboard 修改tocken-ttl避免频繁输入tocken[4] kubectl 快捷指令[5] 解决UTC时间问题[6] kubectl命令自动补全[7] kubectl exec进入pod[8] 使用hostpath解决容器UTC时间…

LibreOffice 在win11(高版本win10)无响应的解决方案

问题描述 某次windows升级了以后&#xff0c;LibreOffice无法启动无响应、无报错 解决 安全模式启动 然后禁用显卡加速 然后&#xff1a;应用更改并重新启动 即可以正常模式启动LibreOffice

ARP协议(地址分析协议)

系列文章目录 数通王国历险记&#xff08;4&#xff09; 目录 前言 一&#xff0c;什么是地址解析协议&#xff08;ARP&#xff09; 二&#xff0c;封装和解封装 三&#xff0c;为什么需要地址解析协议&#xff08;ARP&#xff09; 四&#xff0c;ARP的验证实验 4.1&#x…

MySQL 学习笔记 4:视图

MySQL 学习笔记 4&#xff1a;视图 图源&#xff1a;ubiq.co 简单的说&#xff0c;视图就是“固化的SQL查询”。 这里看一个简单示例&#xff0c;我们有一个表&#xff0c;保存学生信息&#xff1a; mysql> select * from student limit 10; ---------------------------…

利用电价运行策略研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

外观模式:简化复杂系统的访问接口

外观模式是一种结构型设计模式&#xff0c;它提供了一个统一的接口&#xff0c;用于访问复杂系统中的一组接口。本文将深入探讨外观模式的原理、结构和使用方法&#xff0c;并通过详细的 Java 示例代码来说明。 1. 外观模式的定义 外观模式是一种通过提供一个简化的接口&…

LoggerFactory is not a Logback LoggerContext but Logback is on the classpath

springboot项目报错如下&#xff1a; 这个错误是由于在你的Java代码中使用了Logback日志库&#xff0c;但是同时又存在与Logback竞争的其他日志库&#xff08;例如slf4j-simple&#xff09;导致的冲突。 要解决这个问题&#xff0c;你可以尝试以下几个步骤&#xff1a; 1. 检…

计算机网关原理、子网掩码原理(路由器、交换机)(网关:与以太网接口关联的路由)

文章目录 网关网关的历史网关的功能网关的原理相关疑问为什么用子网掩码与IP地址进行与运算来确定一个IP地址所属的子网&#xff1f;网关地址是谁定的&#xff0c;是配置路由的人随意定的吗&#xff1f;&#xff08;配置人员定的&#xff09;如何正确设置网关地址&#xff08;路…

WPF 如何引入图标文件

文章目录 前言&#xff1a;WPF 引入图标什么是ttf字体阿里云矢量库下载WPF引用为什么文件路径是#iconfont而不是iconfont。前面为什么要带个#号&#xff1f; 前言&#xff1a; 我最近在研究WPF&#xff0c;吃饭嘛&#xff0c;桌面端实在是不想用Winform&#xff0c;太丑了。WP…

WebDAV之π-Disk派盘+Notability

Notability 支持WebDAV方式连接π-Disk派盘。 Notability是一款功能强大的数字笔记应用,适用于iOS和macOS。它提供了优秀的手写体验,支持手写、录音和多种标记。用户可以记录想法、思路、绘图和草图,进行注释和标记,实现高效的学习和创作。同时,Notability具有文本输入、…

16 Java获取随机数

使用new Random创建一个随机数对象&#xff0c;然后调用里面的nextInt方法&#xff0c;方法中传入一个数字n&#xff0c;则随机数的范围为[0,n&#xff09;。代码如下&#xff1a; package demo;import java.util.Random;public class Demo10 {public static void main(String…

xilinx zc706 以太网性能测试(iperf)

一&#xff1a;概述 以太网流量测试是一种评估网络性能和容量的测试方法。它通过模拟实际网络环境中的数据流量&#xff0c;以确定网络在高负载情况下的表现。 在以太网流量测试中&#xff0c;可以使用各种工具和技术来生成和控制数据流量。这些工具可以模拟不同类型的流量&a…

C#基础学习_集合中对象的动态排序

C#基础学习_集合中对象的动态排序 上一期我们了解了Icompare这种默认的排序方法,本次我们学习一下比较器ICompare的应用(可以替代Icompare这种默认的排序方法) 因为默认排序,只能有一种,使用起来可能会有局限性。 此时需要添加比较器: 根据需要,在需要实现动态排序的类…