Java:类和对象(作业自存)
1.面向对象:(oop:Object Oriented Programming)
特点:封装,多态,继承
面向对象的做法:找一个洗衣机-->把脏衣服放下-->拿回来穿上。(不需要知道具体的洗衣服的方法)
2.面向过程:
特点:一步一步分析,消耗资源。
面向过程,如洗衣服:盆→水+洗衣粉→放衣服浸泡-->搓洗-->晾晒-->收纳
3.类:
3.1 类class: 类是一种数据类型。是一组相关属性和行为的集合,用来描述现实世界事物的。
类有属性和行为。
3.2 定义一个类的属性:
public class baby{
1.成员变量
2.成员方法(函数)
}
例子1:
public class Clothes
{
String id; //实例变量
String colorType; //实例变量
int size; //实例变量
Clothes[] siblings
}
语法:变量修饰符 类型 变量名
变量修饰符:
修饰符 |
说明 |
public |
成员变量可以被项目中的任何方法访问,建议尽量少用 |
protected |
不在同一个包中的类不能访问,但子类可以访问 |
private |
只能在同一个类中使用 |
static |
类变量,其值为该类的所有对象共享,不会因类的对象不同而不同 |
final |
最终成员变量,其值保持不变,即常量 |
transient |
当对象被持久化时(例如写入数据库),该成员变量的值不需要保存 |
volatile |
同步多线程访问的成员变量的值,以便使不同的线程总是得到 该成员变量的同一个值。关于线程,请参阅第11章 |
数据类型:double 布尔 int String 数组类型
3.2.1 属性
① 基本介绍
从概念或叫法上看: 成员变量= 属性= field(字段) (即成员变量是用来表示属性的)
案例演示:Car(name,price,color) Cat(name ,age,color)
属性是类的一个组成部分,一般是基本数据类型,也可是引用类型(对象,数组)。比如我们前面定义猫类的int age 就是属性
②属性的注意事项和细节说明
属性的定义语法同变量,示例:访问修饰符 属性类型 属性名;
修饰符: 控制属性的访问范围
有四种访问修饰符public, proctected, 默认, private
属性的定义类型可以为任意类型,包含基本类型或引用类型(存储差别)
属性如果不赋值,有默认值,规则和数组一致。具体说: int 0,short 0, byte 0, long 0, float 0.0,double 0.0,char \u0000
③如何访问属性
基本语法
对象名.属性名;
cat.name ;
cat.age;
cat.color;
3.3 定义了一个类之后,就可以用它来创建对象,就是类的实例(在New之后才会分配给对象空间)
Clothes hxek = new Clothes();
3.4 成员变量的初始化
①:在定义类时,可以定义赋值属性,但是其实是在new了对象之后,才会分配空间,为成员变量赋初值。
②:如果在定义类的时候不知道成员变量的值,可以在构造函数中进行初始化。
③:如果②,③ 都不行,可以在成员函数中设定。
3.5 构造函数//构造器
3.5.1 特点:
①:构造函数的名称和类名完全相同
②:构造函数没有返回值,不需要返回值类型
③:构造函数在创建对象自动被调用的,用来初始化成员变量。
④:每个类至少一个构造函数,如果没有写,系统会自己调用
⑤:构造函数可以用参数,也可以没有参数。
3.4.2 语法
①:基本语法:
[修饰符] 方法名(形参列表){
方法体;
}
例子2:public class Classname{
String specitally;
int class;
String name;
classname(){ //构造函数
...
}
}
classname(String myspecitally,int myclass,String myname){
specitally = myspecitally;
class = myclass;
name = myname;
}
②:在类中定义与构造器初始化的区别
声明时为成员变量赋值,那么你一创建对象,这个赋值就进行,而且先于构造器执行。
而且你每次创建这个类的对象,都是同一个值。
构造方法初始化可以单独为每一个对象赋不同的值。
3.6 成员方法
3.6.1 定义:定义普通的成员函数
在类中,构造函数是 特殊的 用于初始化类成员变量的函数,要求与类名保持一致。
此外,还有一种普通的函数,定义普通的成员函数。
语法: 数据类型 函数名 参数列表
{语句块}
细节:
①:一个返回值,返回一个变量/但可以运用数组,表示多个情况
②:void 没有返回值
③:返回的都是定义的类型
3.7 形参和实参
①函数中使用:
形参出现在函数定义中,在整个函数体内都可以使用, 离开该函数则不能使用。实参出现在主函数中,进入被调函数后,实参变量也不能使用。
②调用
形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量。
实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值。
③举例
1. 比如你定义一个函数public static int add(int a,int b),这里的a和b就是形参。
2. 当你进行函数调用的时候,add(1,2),这里的1和2就是实参。
3. 简单来说就是进行函数调用的时候需要实参从主函数中传给被调用函数中的形参,这样函数才可以执行,实参和形参起到一个桥梁的作用。
④
3.8 类和对象分配机制
3.9成员方法传参机制
①:基本数据类型分配机制:
如果有参数,在使用new创建对象时,要制定相应的参数。
Clothes hxer = clothes("1","白色","160");
意思是 创建一个类 类中的对象 id是1,颜色是白色,尺码是s。
"1","白色","160" 是实参
当函数调用时,就会把实参穿给形参。
a,b,c 就是形参。
public clothes(string a,String b,int c){
id = a
colortype = b
size = c
}
例子3:
package com.company.excerse;public class monny { //与文件名相同class Dollar{ //创建一个类dollarint n =100; //局部变量public Dollar(){ //建立一个与类名相同的函数System.out.println(n);}}Dollar d = new Dollar();//new 一个空间public monny(){ //创建一个函数 monny 与类名monny相同System.out.println("give to much");}public static void main(String[] args){ //主函数monny m = new monny(); } }
先执行dollar的,调用dollar的构造函数
再执行monny的执行函数。
结果:
3.6 实参和形参
3.7 类函数调用的内存图
例子:
public class Person {
String name;
int age;
public void show(){
System.out.println(“姓名:”+name+",年龄:"+age);
}
}
public class TestPerson {
public static void main(String[ ] args) {
// 创建p1对象
Person p1 = new Person();
p1.age = 24;
p1.name = “张三”;
p1.show();
// 创建p2对象
Person p2 = new Person();
p2.age = 35;
p2.name = “李四”;
p2.show();
}
}
1.首先,在方法区加载person类,程序从mian()方法开始执行main()方法加载到栈内存。
2.然后,main()方法中,创建对象p1,person()构造方法加载到栈内存,在堆内存中开辟出一个内存块地址为0x11(这里是随意命名)赋值,name:null,age:0.执行完毕,person()构造方法从栈内存移除。
3.在main()方法中继续执行,给age赋值为24,给name赋值为“张三”.调用show()方法,show()方法加载到堆内存。输出内容“张三,24”,show()方法执行完毕从栈内存移除。
4.创建对象p2,person()构造方法加载到栈内存,在堆内存中开辟出一个内存块地址为0x12(这里是随意命名)赋值,name:null,age:0.执行完毕,person()构造方法从栈内存移除。
5.继续执行,给age赋值为35,给name赋值为“李四”.调用show()方法,show()方法加载到堆内存。输出内容“李四,35”,show()方法执行完毕从栈内存移除。
6.main()方法执行完毕,从栈内存移除。
3.7 创建一个对象
①先声明再创建
Cat cat ; //声明对象cat
cat = new Cat(); //创建
②直接创建
Cat cat = new Cat();
Java:类和对象(作业自存)相关推荐
- 【Java】第7章 Java 类和对象 头歌Educoder实训作业(七)
第1关:练习-Java类和对象之类的声明之复数运算 任务描述 本关任务:求两个复数相加后的结果. 两个复数之间相加的运算法则:实部与实部相加,虚部与虚部相加. 关于复数的定义,可以自行查阅,本实训不做 ...
- java类和对象在内存的表现形式
Java内存分配与管理是Java的核心技术之一,不管学习任何一门语言,我们要知其然,知其所以然,本文主要分析下Java中类和对象在内存中的表现形式,方便我们对其有更深了解.一般Java在内存分配时会涉 ...
- 类与对象作业(简单工厂模式)
一.自助饮品系统(作业要求) 二.代码内容 1.代码逻辑关系 2.饮品,Coco类 package naicha;import java.util.Scanner;/*** @Auther: Mujy ...
- java类与对象实验_JAVA类与对象实验报告
<JAVA类与对象实验报告>由会员分享,可在线阅读,更多相关<JAVA类与对象实验报告(6页珍藏版)>请在人人文库网上搜索. 1.面向对象程序设计实验报告实验三.类与对象(1) ...
- 杨校老师课堂之Java类与对象、封装、构造方法
杨校老师课堂之Java类与对象.封装.构造方法 本篇文章内容如下: 面向对象 类与对象 三大特征--封装 构造方法 教学目标 能够理解面向对象的思想 能够明确类与对象关系 能够掌握类的定义格式 能够掌 ...
- 从Java类到对象的创建过程都做了些啥?内存中的对象是啥样的?
转载自 从Java类到对象的创建过程都做了些啥?内存中的对象是啥样的? 先回顾一下Java程序执行的过程: Java程序执行时,第一步系统创建虚拟机进程,然后虚拟器用类加载器Class Loade ...
- java类和对象程序_Java类与对象程序设计基础
Java类与对象程序设计基础 一.实验目的: 通过编制一个独立应用程序,使得学生掌握Java的系统所提供类的引用方法:通过编制一个完整的应用程序,使得学生对Java的应用程序的基本构成和基本算法熟练掌 ...
- java类与对象 演练 查找并修改姓名
java类与对象 演练 查找并修改姓名 视频 https://www.ixigua.com/i6870489659168784903/ 思路 先定义一个类 类中有一个名字数组 提前给这个数组一些默认值 ...
- java类与对象 演练 客户姓名添加与查看
java类与对象 演练 客户姓名添加与查看 视频 https://www.ixigua.com/6870483106223096327?logTag=_YUmIb2rn9-6JpoNipj9r 类的定 ...
- 最大公约数与最小公倍数( 初学Java 类与对象 )
最大公约数与最小公倍数( java 类与对象的运用 ) Problem Description 输入两个正整数,求它们的最大公约数与最小公倍数. Input 输入两个正整数,两个整数之间用空格分开. ...
最新文章
- Go 知识点(12) — 类型转换以三方库 cast
- jsonb 查询_如何使用IN运算符查询jsonb数组
- 【D3.V3.js系列教程】--(十四)有路径的文字
- Linux(Ubuntu,Cent OS)环境安装mkfontscale mkfontdir命令以及中文字库
- jconsole是否可以在生产环境使用_jconsole使用
- carbondata 1.1.0安装文档
- vue-transition过渡动画
- Xamarin.Form 超链接 用手势实现
- 2020网上答题拿证书的竞赛_参赛答题拿证书—全国大学生知识竞赛
- Linux-lsof
- 51单片机项目设计:WiFi视频小车制作教程、正点原子wifi摄像头模块应用、手机wifi控制
- 独家策划-----让“超女”和“好男”联姻
- 基于centos7制作安装好环境的iso镜像文件
- 选购笔记本要看清液晶屏幕及主流技术
- 【神经网络与深度学习】 Numpy 实现全连接神经网络
- 防复制防破解小区门禁梯控升级非联网CPU卡脱机写卡门禁梯控一卡通系统92HID623CPU V5.00操作说明之用户卡加密发卡设置说明
- 自动给多个视频进行画面裁切,裁剪成一样的尺寸
- 35岁以后的Android程序员出路在哪里?最强技术实现
- [转] R 解读逻辑回归结果:回归系数,OR
- 自己写的一个简单的android记事本app
热门文章
- 【深度学习】深度学习的归一化方法的演变(局部响应LRN,BN,LN, IN, GN, FRN, WN, BRN, CBN, CmBN)
- python 字符串替换_python字符串替换第一个字符串的方法
- eja变送器的选型考量因素
- 阿里巴巴赴美上市,市值将超千亿
- 车辆管理系统设计(C++)
- 5.12 WOW协议之谜
- mysql-8.0.27-linux版本安装手册,让你一路畅通无阻,2分钟就完成安装
- 错误:DeprecationWarning: The default dtype for empty Series will be ‘object‘ instead of ‘float64‘ in
- oracle插入单引号与符号
- php缓存小偷,小偷PHP+Html+缓存_PHP教程