JAVA中有关类与对象的一些知识的使用

类与对象
如何在IDEA中创建一个包
面向对象:就是利用JDK中已经为我们提供好的类与方法,实现与精确敲出代码相同的功能。
面向对象语言特点:强调对象。
面向对象的语言的特征:强调步骤;封装,继承和多态。
找到代码帮忙实现;*/
/*类的定义:就是一个事物属性与行为的集合
属性:这个东西是什么,来自哪里,是什么品种等等信息都属于属性;
行为:这个东西能干什么;
例如:一只来自中国东北的猫,这就是一个类中的属性;
行为:这个猫能够活动,吃饭,睡觉等等,这就是这个类的行为信息;
类是对象的模板,对象是类的实体;类(抽象的),对象(实体的)
类就好比手机设计图,拥有一部手机的全部信息;
而对象就是根据这个设计图做出来的手机,即对象是用来实现这个类的功能的;
定义类的方法
例如定义一个叫student的类
成员变量是定义在类当中,而却在方法的外侧
此外类中的成员方法中不带static关键字
首先要定义n个成员变量,这里的成员变量个数由自己决定(即属性)
其次要定义n个成员方法,这里的成员方法个数也由自己决定
Public class student{
int age(定义一个成员变量)
string name(定义另一个成员变量)
public void eat(){
System.out.println(“chi”)
}
public void sleep(){
System.out.println(“sleep”)
}
public void run(){
System.out.println(“run”)
}
}
对象的定义及创建
通常情况下,一个类名称不能直接使用,需要根据类创建一个对象
对象的创建
1、导包:import 包名称.类名称;
2、创建:类名称 对象名=new 类名称();
3、使用:使用成员变量:对象名.成员变量名
使用成员方法:对象名.成员方法名
例如定义一个叫phone的类
public class phone{
int sizeint name
public void phonenumber(int a){
a=18578683507;
System.out.println(“a”)
}
public void string(string b){
b=“abcdefg”;
System.out.println(“b”);
}
}
想要使用一个类的方法
import 包名称.类名称;
如 import cn.phone
创建对象:类名 对象名=new 类名()
phone ph=new phone()
使用类名中的成员变量的方法:
对象名.成员变量名
例如:ph.phonenumber
一个对象的内存图
栈、堆、方法区;
方法区中保存了各种各样的方法,包括类中的成员变量方法与main方法;
public class等等类与方法均保存在了方法区中
成员变量会参照存在于方法区中的成员变量而在栈中有一个赋有默认值的复制
而成员方法只在堆中保留了自己的地址;
当想要调用某一个类中的元素时
过程如下:先将栈中有关类的地址,赋给对象
即有一个名为phone的类,此时我创建一个叫one的对象
phone one=new phone(),就是将堆中的phone中的有关地址赋给one,从而获取到堆中的成员变量与成员方法的地址
此时one中存放的是放置于堆中的地址;
对象名称.成员变量(就是通过存放于对象中的地址,找到存放于堆中的成员变量或者是成员方法的地址,然后进行更改)
对象名称.成员方法(就是通过存放于对象中的地址,找到存放于堆中的成员方法的地址,最后找到存放于方法区中的成员方法,使它进栈)
例如:one.call
两个对象使用同一个方法的内存图
一个类可以创建多个对象
两个对象的过程其实相同即在堆中又开辟了一个空间,其中的操作与第一个类中的方法相同。
就是整个运行过程参见第一个类
在该过程中对象的作用其实为一个局部变量;
故而赋值等等方面的作用相当于一个变量;
使用对象作为方法中的参数或者返回值;均为可以接受的
如何让对象成为方法中的参数或者返回值
当对象作为参数传递至方法时,实际上传递的是地址值。
对象作为参数方法的格式
例:
punlic static void method(类名 对象名){
这种情况就是创建一个参数类型为类的方法
注意:类和方法均储存于方法区;
程序执行过程:首先是方法区中的main方法进栈;
而为新创建的类所开辟出来的内存空间存放于栈中
比如创建一个叫one的对象,则one存储于栈中,内部保留的是存放于堆中的成员变量与成员方法地址值的地址(phone one=new phone())这一个过程就是将类中所储存的成员变量,
成员方法的地址值赋给one这个对象
可以通过one.变量名的方法来读取地址找到堆中的成员方法地址,用这样的方法来赋值调用内部的成员。
使用自定义的类作为方法的返回值
类是引用数据类型,类名即是数据类型名
类作为方法的返回值,返回的是对象的地址
例:
public class Phone{
String name;
double price;
double number;
}
public class main{
public static void main(String[]args){
phone two=get phone()
System.out.println(“two.brand”);
System.out.println(“two.method”);
}
public static phone get phone(){
phone one=new phone()
one.name=“小米”;
one.price=1.2222;
one.number=1.2222;
return one;
}
这样的一个操作,是将one的地址返回至调用这个方法的位置;
成员变量和局部变量的区别
1、定义位置不同:局部变量,只能在方法内部使用
2、成员变量:直接定义在类当中
3、作用范围不同,一个是只能在方法的范围内使用,另一个则是在整个类中作用。
4、默认值存在差异,若是局部变量,则无默认值,而若是成员变量,则有相应的默认值(如null,0—)等
面向对象语言的特征包括:封装性,多态性,继承性。
封装性:
即封装包括了方法和关键字两个方面,封装的作用是将作为方法和关键字的具体信息与细节隐藏起来,从而使得代码串更加简洁。
private关键字的作用与使用:用来对于需要保护的成员变量进行修饰
如果在本类中对于某个成员变量进行修饰,那么将无法在本类之外直接调用或访问该成员变量,
想要访问需要定义两个成员方法
间接访问成员变量需要使用set-get方法进行访问;
其中的setAge的作用是往成员变量中赋值
而getAge的作用则是将其中的age中的数值赋给其他变量,在这样的一个过程中age需中的a需保持大写。
public void setAge(int num){
age=num;
}
public int getAge(){
return age;
}
格式必须是getXxx setXxx;
对于getter来说,不能有参数,返回值类型与成员变量相同;
其中boolean类型中的Getter方法一定要写成是isXxx的形式
this 关键字的作用:当类中的局部变量名和成员变量名相同时会优先调用局部变量名而不是成员变量名
故而当想要访问成员变量名时,需要用this关键字,即this.成员变量名
谁调用了成员变量所在的方法,谁就是this,this.成员变量只能写在方法的内部,而不能写在外部进行。
构造方法是专门用来创建对象的方法,当通过关键字new来创建
1、方法名称必须跟类名称完全一致
2、构造方法没有返回值,连void都不写
3、在构造方法中不能出现return等返回值·
5、如果没有编写任何构造方法,那么编译器会给予你一个默认构造方法,没有参数,什么事情都不做
6、如果已经编写了至少一个构造方法,那么系统将不会自动给予你默认的构造方法
7、构造方法同样也可以实现重载
基本格式:public 类名称(参数类型+参数名称){
方法体
}
三、定义一个标准的类所需要的要素包括:
1、每一个成员变量都要用private关键字进行修饰
2、每一个成员变量都要配套一对getter-setter方法
3、要编写一个有参数的构造方法
4、要编写一个无参数的构造方法
以下为定义一个标准的学生类
}file
欢迎关注技术公众号:布尔青年JAVA,获取更多软件学习干货!

我们能为你提供什么?
技术辅导:C++、Java、嵌入式软件/硬件
项目辅导:软件/硬件项目、大厂实训项目
就业辅导:就业全流程辅导、技术创业支持
对接企业HR:培养输送优质性人才

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值