JAVA- 面向对象编程(上)

news2024/11/25 11:23:16

🌈个人主页: Aileen_0v0
🔥系列专栏:PYTHON学习系列专栏
💫个人格言:"没有罗马,那就自己创造罗马~"


目录

面向对象的特征及理解 

new 

Static

Summary:


面向对象的特征及理解 

面试题:oop的三大特征是什么?  ---> 封装,继承,多态

类,对象是什么?

类是自定义类型, 对象是实体

通俗的讲类相当于建房子的图纸,对象相当于通过图纸建出来的所有房子 

通过一个类,可以产生多个对象

面向对象: 找对象 创对象  使用对象 

面向对象:注重的是对象,也就是参与过程所涉及到的主体。是通过逻辑将功能实现连接起来
面向过程: 1.把冰箱打开 2.把大象放入 3冰箱关起来

面向对象:打开冰箱,储存,关闭都是对冰箱的操作,是冰箱的行为。冰箱就是一个对象,所以只要操作冰箱所具备的功能,都要定义在冰箱中

package Test;

/**
 * 访问修饰限定符:
 * public: + 公有的
 * private: - 私有的
 * protected: 受保护的
 * 什么都不写 : 默认权限 -> 包访问权限
 */

class Person{
	//字段 -> 成员变量  : 定义在方法外边 类 的 里面
	//实例成员变量: 在对象Person里面
	//实例化没有初始化 默认值为对应的0值.-> (1.引用类型默认为null 2.简单类型默认为0)
	//我们也可以对实例成员变量进行赋值
	//char -> "\u0000"(空类型)  boolean -> false
	public String name = "lin";
	public int age = 18;
	
//	public char ch;
//	public boolean flg;
	
	//静态成员变量 不属于对象 属于类  ---有static 修饰
	public static int size = 100;
	//方法 -> 行为  eat 和 sleep  --- 实例成员方法
	public void eat() {
		int a = 10 ; //局部变量 --- 使用前需要初始化
		System.out.println("eat()!" );
	}
	
	public void sleep() {
		System.out.println("sleep()");
	}
	
	//静态成员方法
	public static void func1() {
		System.out.println("static::func1()");
	}
	
}
public class TestDemo{
	public static void main(String[] args) {
		//如何访问静态成员方法 ,跟静态成员变量类似通过类名访问 
		Person.func1();
	}
	
	public static void main4(String[] args) {
		//如何访问实例成员方法?
		//跟成员变量类似,也需要创建一个对象进行访问
		Person per = new Person();
		per.eat();
		per.sleep();
	}
	public static void main3(String[] args) {
		//如何访问静态的数据成员?
		//不需要new一个对象,直接通过类名就可以访问了
		//  类名.静态成员变量
		System.out.println(Person.size);
		
	}
	public static void main2(String[] args) {
		Person per = new Person();
		//如何访问对象当中的实例成员变量?
		//操作符: 点号  对象的引用 . 成员变量
		System.out.println(per.name); 
		System.out.println(per.age);
		
//		System.out.println(per.ch); 
//		System.out.println(per.flg); 
	}
	public static void main1(String[] args) {
		//实例化一个对象 通过关键字 new
		Person person1 = new Person();
		Person person2 = new Person();
		Person person3 = new Person();
		Person person4 = new Person();
	}
}

new 

注意:

new关键字用于创建一个对象的实例

使用 . 来访问对象中的属性和方法

同一个类可以创建多个实例

字段/属性/成员变量
在类中,但是方法外部定义的变量.这样的变量我们称为“字段”或“属性”或“成员变量"三种称呼都可以一般不会严格区分).
用于描述一个类中包含哪些数据

使用 . 访问对象的字段.
“访问”既包含读,也包含写
对于一个对象的字段如果没有显式设置初始值,那么会被设置一个默认的初值

默认值规则:
。对于各种数字类型,默认值为 0.
。对于 boolean 类型,默认值为 false.
。对于用类型(String,Array, 以及自定制类), 默认值为 null 

认识 null
null 在Java 中为“空用",表示不引用任何对象,类似于C语言中的空指针如果对 null 进行,操作就会引发异常 

控制台运行结果:

初始化后:

 

利用对象.变量名进行变量数据的修改

 对于static来说,要访问静态成员方法可以利用:类名.方法名

 静态方法内部不能够访问非静态的数据成员

 

Static

如果在任何方法上应用static 关键字,此方法称为静态方法
1.静态方法属于类,而不属于类的对象
2.可以
直接调用静态方法,而无需创建类的实例
3.
静态方法可以访问静态数据成员,并可以更改静态数据成员的值

总结: 静态有限制,非静态没有限制

         静态方法不能直接使用非静态数据成员或调用非静态方法(非静态数据成员和方法                   是和实例相关的)

         曾经写的方法为了简单,都统一加上了 static.但实际上一个方法具体要不要带          static,都需要是情形而定
         main 方法为 static 方法 

package Test;

class Student{
	public int age;//实例变量
	public String name;//实例变量
	public String sex; //实例变量
	public static int count;//类变量,也叫静态变量
	public final int size = 10;
//被final修饰局部变量的用途 保护局部变量的值 一旦将局部变量声明为final,它的值将被保护起来,不能被无意间或恶意地更改
	public static final int COUNT = 99;

public class TestDemo1 {
	public static void main(String[] args) {
		Student stu = new Student();//person为对象的引用
		stu.age = 10;
//		stu.count = 100;
		System.out.println(stu.age);
//		System.out.println(stu.count);

	}

 }
}

 

Summary:

        这部分介绍了类和对象的概念,以及方法和属性 ,然后我们可以通过关键字new创建对象

        Java的变量包括(1.实例成员量,2.静态成员变量-有static修饰) ,

        方法包括(1.静态成员方法,2.实例成员方法),

        对于静态变量和方法可以通过类名去访问,而实例则需要创建对象,然后通过对象访问

 

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

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

相关文章

Gorm 中的迁移指南

探索使用 GORM 在 Go 中进行数据库迁移和模式更改的世界 在应用程序开发的不断变化的景观中,数据库模式更改是不可避免的。GORM,强大的 Go 对象关系映射库,通过迁移提供了一种无缝的解决方案来管理这些变化。本文将作为您全面的指南&#xf…

【数据结构】败者树的建树与比较过程

文章目录 前置知识归并段 建树过程比较过程疑问为什么比较次数减少了?如果某个归并段的元素一直获胜,没有元素了怎么办?处理方法 1处理方法 2 前置知识 归并段 外部排序算法通常用于处理大规模数据,其中数据量远超过计算机内存的…

社区牛奶智能售货机为你带来便利与实惠

社区牛奶智能售货机为你带来便利与实惠 低成本:社区牛奶智能货机的最大优势在于成本低廉,租金和人工开支都很少。大部分时间,货柜都是由无人操作来完成销售任务。 购买便利:社区居民只需通过手机扫码支付,支付后即可自…

哈希表----数据结构

引入 如果你是一个队伍的队长,现在有 24 个队员,需要将他们分成 6 组,你会怎么分?其实有一种方法是让所有人排成一排,然后从队头开始报数,报的数字就是编号。当所有人都报完数后,这 24 人也被分…

【Python环境管理工具】Anaconda安装及使用教程

Anaconda安装及使用教程 1 Anaconda简介2 Anaconda下载及安装2.1 下载及安装2.2 手动配置环境变量(重点)2.3 测试Anaconda环境是否配置成功 3 Anaconda使用教程3.1 Anaconda Prompt环境管理的常用命令3.1.1 检查conda3.1.2 管理运行环境 4 Pycharm与Anac…

C++ STL 迭代器失效

一、学习资料 STL迭代器的使用 二、vector容器获取值是下标法和at()的区别 vector<int> vA; int array[]{0,1,2,3,4}; vA.assign(array,array5); cout<<vA[6]<<endl; cout<<va.at(6)<<endl;如上述代码&#xff0c;当使用vA[6]的方式出现访问越…

EASYX播放音频文件

添加winmm.lib的依赖 选中链接器中的输入选项&#xff1a;添加附加依赖项winmm.lib并且应用即可 添加音频相关代码 #include <easyx.h> #include <stdio.h> #include <math.h> // 宏定义 #define WINDOW_WIDTH 800 #define WINDOW_HEIGHT 600 #define MAX_…

K8s学习笔记——资源组件篇

引言 前一篇文章我们介绍了K8s的概念理解和常用命令&#xff0c;这篇我们重点介绍K8s的资源组件和相关配置使用。 1. Node & Pod Node: 是 Pod 真正运行的主机&#xff0c;可以是物理机&#xff0c;也可以是虚拟机。为了管理 Pod&#xff0c;每个 Node 节点上至少要运行…

剖析 Tomcat 线程池与 JDK 线程池的区别和联系

文章目录 引言JDK 线程池Tomcat 线程池Tomcat 连接器Tomcat 的 ExecutorTomcat 线程池配置 区别和联系区别联系 结论 &#x1f389;欢迎来到Java面试技巧专栏~剖析 Tomcat 线程池与 JDK 线程池的区别和联系 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博客主页&#xff1a…

qt报错permission denied

写fk项目的时候&#xff0c;报这个错&#xff0c;然后网上查&#xff0c;说的是因为之前运行的qt进程没有关闭&#xff0c;然后我在任务管理器上查看&#xff0c;却没有看见有我正在运行的qt程序&#xff0c;我再出现清除 qmake也不可以&#xff0c;然后我再去删除out目录下的所…

软件提示msvcp110.dll丢失的5个修复方法,快速解决dll丢失问题

你是否曾遇到过msvcp110.dll文件丢失的情况&#xff1f;msvcp110.dll是Microsoft Visual C 2012运行时库中的一个动态链接库文件&#xff0c;它是Visual Studio 2012编译的程序所必需的。它包含了许多C标准库函数的实现&#xff0c;如字符串处理、数学运算等。当我们运行一个程…

C# 文件 文件夹 解除占用

文件/文件夹 解除占用或直接删除。 编程语言&#xff1a;C# 这个就不用过多功能描述了。 注册windows 文件/文件夹 右键菜单。 文件夹解除占用&#xff1a;遍历文件夹所有文件&#xff0c;判断是否被占用&#xff0c;先解除文件占用&#xff0c;后解除文件夹占用&#xff0…

Pikachu(一)

暴力破解 Burte Force&#xff08;暴力破解&#xff09;概述 “暴力破解”是一攻击手段&#xff0c;在web攻击中&#xff0c;一般会使用这种手段对应用系统的认证信息进行获取。 其过程就是使用大量的认证信息在认证接口进行尝试登录&#xff0c;直到得到正确的结果。 为了提高…

uni-app学习笔记

目录 一、前期准备 1、项目认识 2、pages.json基本配置 3、创建页面 二、tabBar 1、获取图标 2、代码配置 三、基础认识 1、页面生命周期 2、App.vue应用生命周期 四、基础组件 1、scroll-view可滚动视图区域 2、提示框 3、swiper滑块视图容器 4、form表单组件 一…

第 370 周赛 100112. 平衡子序列的最大和(困难,离散化,权值树状数组)

太难了&#xff0c;看答案理解了半天 题目的要求可以理解为 nums[ij] - ij > nums[ii] - ii &#xff0c;所以问题化为求序列 bi nums[i] - i 的非递减子序列的最大元素和需要前置知识&#xff0c;离散化&#xff0c;树状数组离散化&#xff1a;将分布大却数量少(即稀疏)的…

【嵌入式框架】搭建调试输出、建立时间系统

一、Zorb简介 Zorb Framework是一个基于面向对象的思想来搭建一个轻量级的嵌入式框架。 搭建Zorb Framework的目的是为在不能运行Linux的芯片上快速开发应用&#xff0c;不用反复造轮子。 Zorb Framework的初步设计功能有&#xff1a; 1、时间系统功能zf_time 2、环形缓冲…

微信小程序获取openid

1.需要小程序中调用 wx.login获取临时code值&#xff08;每次获取的code值只能用一次&#xff09; wx.login({success (res) {console.log(res)} }) 打印结果为&#xff1a; 2.调用微信提供的apid接口&#xff0c;获取openid&#xff0c;入参需要三个参数&#xff1a;AppID(小…

SPSS单因素方差分析

前言&#xff1a; 本专栏参考教材为《SPSS22.0从入门到精通》&#xff0c;由于软件版本原因&#xff0c;部分内容有所改变&#xff0c;为适应软件版本的变化&#xff0c;特此创作此专栏便于大家学习。本专栏使用软件为&#xff1a;SPSS25.0 本专栏所有的数据文件请点击此链接下…

Python 用户输入和字符串格式化指南

Python 允许用户输入数据。这意味着我们可以向用户询问输入。在 Python 3.6 中&#xff0c;使用 input() 方法来获取用户输入。在 Python 2.7 中&#xff0c;使用 raw_input() 方法来获取用户输入。以下示例要求用户输入用户名&#xff0c;并在输入用户名后将其打印在屏幕上&am…

Prometheus接入AlterManager配置企业微信告警(基于K8S环境部署)

文章目录 一、创建企业微信机器人二、配置AlterManager告警发送至企业微信三、Prometheus接入AlterManager配置四、部署PrometheusAlterManager(放到一个Pod中)五、测试告警 注意&#xff1a;请基于 PrometheusGrafana监控K8S集群(基于K8S环境部署)文章之上做本次实验。 一、创…