当前位置: 代码迷 >> 综合 >> 4.类
  详细解决方案

4.类

热度:43   发布时间:2023-09-12 06:41:34.0

类的基本概念

  • 类和对象是面向对象程序设计中最核心的概念
  • 类是对某一事物的描述(共性),是抽象的,概念上的定义,而对象则是实际存在的属性类,事物的具体的个体(个性),因为也称为实例。
  • 面向对象程序设计思想的重点是类的设计,而不是对象的设计
  • JAVA语言把数据成员称为域变量、属性、成员变量等;而把函数成员称为成员方法,简称为方法

定义类

1. 类的一般结构

[类修饰符] class 类名称
{[修饰符] 数据类型 成员变量名称;...[修饰符] 返回值的数据类型 方法名(参数1,参数2,...){语句序列;return [表达式];...}
}
  • 类修饰符的含义
修饰符 含义
public 将一个类声明为公共类,可以被任何对象访问
abstract 将一个类声明为抽象类,没有实现方法,需要子类提供方法的实现,所以不能创建该类的实例
final 将一个类声明为最终类即非继承类,表示它不能被其他类所继承
缺省 缺省修饰符时,则表示只有在相同包中的对象才能使用这样的类
  • 实例
public class Book{}

2. 成员变量

[修饰符] 变量类型 变量名 [= 初值];
  • 成员变量修饰符的含义
修饰符 含义
public 公共访问控制符。指定该变量为公共的,可以被任何对象的方法访问
private 私有访问控制符。指定该变量只允许自己类的方法访问,其他任何类(包括子类)中的方法均不能访问此变量
protected 保护访问控制符。指定该变量只可以被它自己的类及其子类或同一包中的其他类访问,在子类中可以覆盖此变量
缺省 缺省访问控制符时,则表示在同一包中的其他类可以访问此成员变量,而其他包中的类不能访问该成员变量
final 最终修饰符。指定此变量的值不能该变。
static 静态修饰符。指定该变量被所有对象共享,即所有的实例可使用该变量
transient 过度修饰符。指定该变量是一个系统保留,暂无特别作用的临时性变量
volatile 易失修饰符。指定该变量可以同时被几个线程控制和修改

说明:在定义类的成员变量时,可以同时赋初值,表明成员变量的初始状态,但对成员变量的操作只能放在方法中。

public class Book{final int a = 1;public int b = 1;private int c = 1;
}

3. 成员方法

[修饰符] 返回值的数据类型 方法名(参数1,...)
{语句序列;return [表达式];
}
  • 成员方法修饰符的含义
修饰符 含义
public 公共访问控制符。指定该方法为公共的,它可以被任何对象的方法访问
private 私有访问控制符。指定该方法只允许自己类的方法访问,其他任何类(包括子类)中的方法均不能访问此方法
protected 保护访问控制符。指定该方法只可以被它的类及其子类或同一包中的其他类访问
缺省 缺省访问控制符时,则表示在同一个包中的其他类可以访问此成员方法,而其他包中的类不能访问该成员方法
final 最终修饰符。指定该方法不能被重载
static 静态修饰符。指定不需要实例化一个对象就可以调用的方法
abstract 抽象修饰符。指定该方法只声明方法头,而没有方法体,抽象方法需在子类中被实现
synchronized 同步修饰符。在多线程程序中,该修饰符用于在运行前,对它所属的方法加锁,以防止其他线程访问,运行结束后解锁
native 本地修饰符。指定此方法的方法体是用其他语言在程序外部编写的
public class Book{final int a = 1;public int b = 1;private int c = 1;public void add() {int i = 5;int j = 2;System.out.println( i + j );}}

4. 成员变量与局部变量的区别

1.从语法形式上看,成员变量是属于类的,而局部变量是在方法中定义的变量或是方法的参数

2.从变量在内存中的存储方式上看,成员变量是对象的一部分,而对象是存在于堆内存的,而局部变量是存于栈内存的

对象的创建于使用

创建对象

  • 创建对象实例
创建box对象box b;//声明指向对象的变量b
b = new box();//利用new创建新的对象,并让变量b指向它box b = new b();通过new运算符在堆内存中创建的实例化对象
  • 成员变量的初始值
成员变量类型 初始值
byte 0
short 0
int 0
long 0L
float 0.0F
double 0.0D
char '\u0000'(表示为空)
boolean false
所有引用类型 null
public class Main {public static void main(String[] args) {Book book = new Book();book.add();}
}

对象的使用

通过对象来引用对象成员的格式:对象名.对象成员对象名.成语名

在类定义内调用方法

例子

double volume()
{return this.area();
}在类的定义内调用本类的其他成员,可在该成员前加this,则this代表调用该成员的对象
  • 实例
public class Book{final int a = 1;public int b = 1;private int c = 1;public void add() {System.out.println( this.a + this.b);}}

参数的传递

以变量为参数调用方法

调用方并传递参数时,参数其实就是方法的自变量个,所以参数要放在方法的括号内来进行传递

public class Book {private String name;String setName(String name) {this.name = name;return name;}
}

以数组作为参数或返回值的方法调用

  1. 传递数组
int[] a = {1,23,4};least(a);void least(int[] array)
{...
}
  1. 返回值为数组类型
int[][] a = { {1,2,3} };
int[][] b=new int[3][3];Transe pose = new Transe()b = pose.transponse(a);...int[][] transponse(int[][] array)
{...return array;
}...

匿名对象

例子

box b = new box();
b.setName(name);改写为:new box().setName(name);则new box()就是匿名对象。
  相关解决方案