简介
👨💻个人主页:@云边牧风
👨🎓小编介绍:欢迎来到云边牧风破烂的小星球🌝
📋专栏:Java基础知识
🔑本章内容:Java类的方法+对象
记得 评论📝 +点赞👍 +收藏😽 +关注💞哦~
一、类的方法
接着第二章第一节的内容,上一节讲到了类的概念 + 类体的声明 + 类体的内容 + 成员变量和局部变量,这次我们讲类的方法
1、方法的定义:
例如👇:
void dogBite( String name )
{
System.out.println( name + " ,咬他!" );
}
区分为👉
2、方法的定义格式:
[public | protected | private]
[static][ final][abstract]
返回类型 方法名([参数列表]) [throws exceptionList]
{
方法体
}
其中
①方法声明
public static void main ( String[ ] args )
②方法体
关于Java的修饰符有👇:
default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
public : 对所有类可见。使用对象:类、接口、变量、方法
protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。
换成图表是这样的:
③方法的参数、方法内定义的局部变量
有效范围问题:(在上一节已讲到,这里就当是复习了)
例子👇:
void 看门 ( People p ) {
String 日志=“”;
if ( p.身份 == "小偷") {
String s = "小偷来啦!";
报警(); 咬他();
日志 += s;
}
if ( p.身份 == "主人") {
日志 += "主人来啦!";
for (int i = 1 ; i <= 100 ; i ++) {
摇尾巴();
}
}
System.out.println(日志);
System.out.println(s);
System.out.println(p.身份);
System.out.println(i);
}
根据上面的定义可知:
3、方法的重载:
例如对
class Area {
float getArea(float r) {
return 3.14f*r*r;
}
double getArea(float x,int y) {
return x*y;
}
float getArea(int y,float x) {
return x*y;
}
double getArea(float x,float y,float z) {
return (x*y+x*z+y*z)*2.0;
}
}
有👇:
double getArea (float x,int y){
return x*y;
}
float getArea (float y,int x){
return x*y;
}
4、构造方法:
例如👇:
如果类中没有构造方法 ,那么在使用该类创建对象时, JVM 会为该类 自动提供一个无参数的构造方法 ,称为 默认构造方法 。如:
class Puppy {
String name;
static String voice = "汪汪~~";
}
在Main中:
Puppy d = new Puppy();
调用了默认构造方法,无参数;实际上,默认构造方法的方法体中无任何代码。
如果类定义了一个或者多个构造方法,那么Java不提供默认的构造方法。例如:
class Lader {
float above,bottom,height;
Lader(float x,int y,float h) {
above=x;
bottom=y;
height=h;
}
}
在Main中构造时:
Lader l1 = new Lader(0.1,100,100);
Lader l2 = new Lader(); //(l1和l2在一个Main里面同时出现时)
合法:Lader l1 = new Lader(0.1,100,100);
非法:Lader l2 = new Lader();
当然:
class Puppy {
String name = "旺财";
Puppy() {
System.out.println("旺财来也!");
}
}
在Main中执行
public class Main {
public static void main(String[] args) {
Puppy d = new Puppy();
}
}
结果为👉:
练习:
定义钟表类 ,在该类中定义构造方法实现对钟表对象的初始化。在创建钟表对象时可以传递时分秒数据进行初始化,也可以不传递任何数据。
代码可以简写为👇:
class Clock
{
int s,f,m; //没有赋值的话,默认的初始化是零
Clock()
{
System.out.println(s+":"+f+":"+m);
}
Clock(int x,int y,int z)
{
s=x;
f=y;
m=z;
System.out.println(s+":"+f+":"+m);
}
}
public class Main {
public static void main(String[] args) {
Clock p1=new Clock();//不传递的初始化
Clock p2=new Clock(4,50,10);//传递的初始化
Clock p3=new Clock(8,30,0);//传递的初始化
}
}
运行结果为👉:
5、类方法和实例方法:
例如:
class A {
int a ;
static int b;
void f() {
a = 120;//合法
b = 210;//合法
}
static void g() {
a = 1;//非法
b = 2;//合法
}
}
即👇:
例如👇:
class A { //这是一个类(class),叫A
static int a; //定义了一个类变量(类变量),叫a的一个整型变量
static void g() { //定义了一个类方法
a = 3;
}
void f() { //定义了一个实例方法(没有被static修饰的)
g(); //合法的——实例方法可以调用类(class)中的其他方法(可以理解为所有的)
}
static void h() { //定义了一个类方法(被static修饰了)
g(); //合法的——类方法可以调用类方法
f(); //非法的——类方法不可以调用实例方法
}
}
二、对象
可能大家看到“对象”一词时,不是很容易理解,就算是学过Java的都不一定能理解;这里小编就说一下自己的见解:
前边学过了类(class),而对象就是用class定义出来的量,比如常见的语句 int a :int是类名(整型),而被它定义的a则是它的对象了。
2.0对象的概念
2.1、创建对象
(1)对象声明
一般格式为: 类名 对象名;
如: People xiaobian;
(2)为对象分配内存
(3)对象的内存模型
class 西游记人物 {
float 身高, 体重;
String 发型, 耳朵,手,脚, 嘴巴;
void 喊话(String s) {
System.out.println(s);
}
}
执行代码:
西游记人物 猪八戒; //声明对象
猪八戒 = new 西游记人物(); //分配内存,使用了new 运算符和默认构造方法
可以这么理解👇:
①首先,声明了一个对象“猪八戒”。
西游记人物 猪八戒;
此时的内存模型如图所示:
②然后,实例化对象“猪八戒”。
猪八戒 = new 西游记人物();
此时,JVM会做两件事:
③创建多个不同对象
西游记人物 猪八戒 = new 西游记人物 ();
西游记人物 孙悟空 = new 西游记人物 ();
2.2、使用对象
– 例如:
class 西游记人物 {float 身高, 体重;
String 发型, 耳朵,手,脚, 嘴巴;
void 喊话(String s) { System.out.println(s);
}
}
– 执行代码:
西游记人物 猪八戒 = new 西游记人物 ();猪八戒.发型 = "光头"; //访问成员变量
猪八戒.喊话( "俺老猪五百年前是帅哥! "); //调用方法
}
2.3、对象的引用和实体
例如:类Point:用x,y坐标表示的点
class Point {
int x,y;
Point(int x,int y) {
this.x = x;
this.y = y;
}
}
执行代码:
Point p1 = new Point(1,1); //①
Point p2 = new Point(100,100); //②
p1 = p2; //③
执行完①和②之后是这样的:
但执行到③的时候:
其实👉:
2.4、参数传值
的 值的精度不可以高于该参数的精度 。
例如👇:
public int getSum( int … x) {
int sum=0;
for( int i=0;i<x.length;i++)
sum=sum+x[i];
return sum;
}
可以执行以下的操作:
getSum(1,2,3);
getSum(4,5);
getSum(1,2,3,4,5,6,7,8,9);
for的扩展用法:
public int getSum( int … x) {
int sum=0;
for( int param:x ) //其中param是新定义的变量
sum = sum + param;
return sum;
}
结束语:
以上是Jav第二章的第2节,希望大家喜欢
下一节开始讲关键字、包、访问权限和类的组合
喜欢的可以点赞+关注哈 ❤