四、类与对象
(一)类
1.基本格式:
访问权限 class 类名{
类体(成员变量(fields)、成员方法(methods))
}
注:类名尽量与声明对象一致,且首字母大写
同类型的变量可以写在一行
2.成员变量和成员方法
访问权限 返回类型 方法名(参数列表){
}
(1)访问权限:public(公共的)>protected(不同类包)>默认的(同一个类包)>private(私有的,只能在声明的类用);
(2)返回类型:void时不用返回return;其他数据类型之一必须返回return;
(3)方法名:见名知意,首字母小写,多个单词时后面的首字母大写;
(4)参数列表:方法定义(形参)、方法调用(实参)
(二)构造方法与对象的创造
1.构造方法(默认生成构造方法)
(1)类中的构造方法的名字必须与它所在的类的名字完全相同且没有类型;
(2)允许在一个类中编写多个构造方法,但是必须参数(个数、类型)不同;
(3)初始化;
(4)new连用。
2.创造对象(有各个数据类型的初始值)
(1)使用new关键字
class Car {
String brand;
String color;
// 构造方法
Car(String carBrand, String carColor) {
brand = carBrand;
color = carColor;
}
}
// 创建Car对象
Car myCar = new Car("Toyota", "Blue");
(三)参数的传值
1.基本数据类型参数的传值(在方法内部对参数进行修改,不会影响到方法外部的原始变量)
public class Main {
public static void main(String[] args) {
int num = 10;
modifyValue(num);
System.out.println("在main方法中,num的值为:" + num);
}
public static void modifyValue(int parameter) {
parameter = 20;
System.out.println("在modifyValue方法中,parameter的值为:" + parameter);
}
}
结果为:10
2.引用类型参数的传值(在方法内部通过这个引用对对象进行操作,会影响到方法外部的对象)
class Person {
String name;
int age;
public Person(String name, int age) {
this.name = name;
java基础532讲
this.age = age;
}
}
public class Main {
public static void main(String[] args) {
Person person = new Person("Alice", 25);
modifyPerson(person);
System.out.println("在main方法中,person的姓名为:" + person.name + ",年龄为:" + person.age);
}
public static void modifyPerson(Person p) {
p.name = "Bob";
p.age = 30;
System.out.println("在modifyPerson方法中,p的姓名为:" + p.name + ",年龄为:" + p.age);
}
}
结果为:30
3.可变参数
public void g(double a,int…x)
(四)对象的组合
定义:对象组合是一种面向对象的设计技术,它通过在一个类中包含其他类的对象作为成员变量,来构建更复杂的类结构。简单来说,就是一个类的对象由多个其他类的对象组合而成,这些对象之间通过包含关系协作,以实现更丰富的功能。
例如:
//发动机模块类
class Engine {
private int horsepower;
public Engine(int horsepower) {
this.horsepower = horsepower;
}
public int getHorsepower() {
return horsepower;
}
}
//轮胎模块类
class Tire {
private double diameter;
public Tire(double diameter) {
this.diameter = diameter;
}
public double getDiameter() {
return diameter;
}
}
class Car {
private Engine engine;//发动机模块类为汽车的成员变量
private Tire[] tires; //轮胎模块类为汽车的成员变量
public Car(Engine engine, Tire[] tires) {
this.engine = engine;
this.tires = tires;
}
public void start() {
System.out.println("汽车启动,发动机马力为:" + engine.getHorsepower());
}
public void displayTireDiameters() {
for (Tire tire : tires) {
System.out.println("轮胎直径:" + tire.getDiameter());
}
}
}
(五)实例成员与类成员
1.定义:在声明成员变量时,用static修饰的称作类变量,否则称作实例变量。
例如:
class Dog{
float x;//实例变量
static int x;//类变量
}
注意:不能用static修饰局部变量
2.区别
(1)所属对象不同:实例成员属于类的对象,每个对象都有自己独立的实例成员;类成员属于类本身,被所有对象共享。
(2)内存分配不同:实例成员在创建对象时分配内存,每个对象的实例成员都有自己的内存空间;类成员在类加载时分配内存,整个类只有一份类成员的内存空间。
(3)访问方式不同:实例成员通过对象访问,类成员可以通过类名访问(也可以通过对象访问,但不推荐)。
(六)方法重载
1.定义:
在一个类中可以有多个方法具有相同的名字,但是这些方法的参数(个数、类型之一)不同。
(七)this关键字
1、在构造方法中使用this
代表使用该构造方法所创建的对象
例如:
class Person {
private String name;
private int age;
// 带有姓名和年龄参数的构造方法
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// 只带有姓名参数的构造方法,年龄默认设为18
public Person(String name) {
this(name, 18);
}
2.在实例方法中使用this
代表正在调用该方法的当前对象
例如:
class Employee {
private String name;
private int salary;
public Employee(String name, int salary) {
this.name = name;
this.salary = salary;
}
public void increaseSalary(int increment) {
int salary = 0; // 局部变量
this.salary += increment; // 使用this访问成员变量
}
}
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/24724.html