目录
1.定义一个类
访问修饰符 class 类的名字{
属性1;
属性2;
方法1;
方法2;
}
案例:定义一个学生类
public class Student { String name; int age; public void study(){ System.out.println("study"); } public void sleep(){ System.out.println("sleep"); } }
1.代码
package org.xiji.object; public class Student { String name; int age; public void study(){ System.out.println("study"); } public void sleep(){ System.out.println("sleep"); } }
2.效果
2.类的实例化与使用
类名 变量名 = new 类名();
//调用属性
变量名.属性
//调用方法
变量名.方法名()
创建一个测试类==》使用类
1.代码
package org.xiji.object; public class StudentTest { public static void main(String[] args) { //创建一个类 Student stu = new Student(); //赋值 stu.name = "惜.己"; stu.age = 18; //输出 System.out.println(stu.name); System.out.println(stu.age); //调用方法 stu.sleep(); stu.study(); } }
2.效果
3.访问控制
1)private
-
private:
- 如果一个成员被声明为
private
,那么它只能在其所属的类中被访问。 - 这种级别的限制意味着这个成员不能被任何其他类(包括子类)所访问。
private
通常用来隐藏数据,确保封装性。- 修饰属性和方法
- 如果一个成员被声明为
2)default
-
default (也称为包私有或不使用任何关键字):
- 当没有指定任何访问修饰符时,默认使用的就是这种访问级别。
- 默认访问权限下,该成员可以在同一个包内的所有类中被访问。
- 不同包中的类无法访问具有默认访问权限的成员,即使它们是子类也不行。
3)protected
-
protected:
protected
访问修饰符使得成员可以被同一包内的所有类访问,并且也可以被不同包中的子类访问。- 这提供了比
default
更宽松但比public
更严格的访问控制。 - 它允许一定程度的继承性和封装性的结合。
4)public
-
public:
- 被声明为
public
的成员可以从任何其他类中被访问,无论这些类位于哪个包内。 public
提供了最宽泛的访问权限,因此应当谨慎使用,仅当确实需要广泛的可访问性时才应该选择这种修饰符。
- 被声明为
注:如下图
base 是一个包 ,object又是一个包.
被default修饰的类访问的范围只在本包
被public修饰的类访问的范围任意包
4.封装一个类
通过private修饰属性,隐藏属性。并且通过public修饰的方法使用this访问本类的私有属性
public class MyPrivate{
private 数据类型1 数据名1
private 数据类型2 数据名1
//通过公共方法访问
public 数据类型1 方法名1(){
return this.数据名1;
}
//通过公共方法访问
public 数据类型2 方法名2(){
return this.数据名1;
}
}
案例:封装一个教师类
1)代码
package org.xiji.object; public class Teacher { private String name; private int age; public String sleep() { System.out.println(this.name+"老师睡觉"); return this.name; } public int say() { System.out.println("年龄是:"+this.age); return this.age; } }
2)效果
5.定义一个构造方法
1)无参数构造
无参数构造函数用于创建对象时不需要传递任何参数的情况。如果在一个类中没有显式地定义任何构造函数,那么Java会自动提供一个默认的无参数构造函数。但是,一旦你在类中定义了至少一个构造函数(无论是否有参数),Java就不会再自动生成这个默认构造函数了。
public class MyTwo{
String name;
//无参数构造
MyTwo(){
}
}
2)有参数构造
有参数构造函数允许在创建对象的同时传入一些初始数据。这对于给对象的状态变量赋初值非常有用。
public class MyTwo{
String name;
//有参数构造
MyTwo(String name){
this.name = name;
}
}
3)注
无论是有参数还是无参数构造方法名必须和类名一致
6.构造方法的重载
构造方法的重载是指在一个类中定义多个构造方法,这些构造方法具有相同的名称(即类名),但参数列表不同。这样可以根据不同的初始化需求来创建对象。构造方法重载允许你在创建对象时提供灵活的初始化方式。
在Java中,可以通过以下几种方式实现构造方法的重载:
- 不同的参数数量:构造方法可以有不同的参数数量。
- 不同的参数类型:即使参数数量相同,只要参数类型不同,也可以构成重载。
- 不同的参数顺序:如果参数的数量和类型都相同,但参数的顺序不同,这也可以构成重载。
package org.xiji.object; public class MyTwo { String name; //无参数构造 public MyTwo() { } //有参数构造 public MyTwo(String name) { this.name = name; } }
案例:快速生成java的构造方法和get,set方法
步骤如下
1)创建一个类编写里面私有属性
2.alt键+insert键
3.全参数构造
4.无参数构造
如下图操作
5.生成get和set方法
可以看到已经生成了
7.static关键字
1. 静态变量
静态变量也称为类变量,它们是所有对象共享的数据成员。一旦值被改变,所有引用这个静态变量的地方都会看到这个改变。
public class Example { public static int count = 0; // 静态变量 public Example() { count++; // 每次创建一个新的Example对象时,count加1 } public static void main(String[] args) { new Example(); new Example(); System.out.println(Example.count); // 输出: 2 } }
2. 静态方法
静态方法也称为类方法,它们可以通过类名直接调用,而不需要创建类的实例。静态方法通常用来执行与类相关但不依赖于特定实例的操作。
public class MathUtils { // 静态方法 public static int max(int a, int b) { return (a > b) ? a : b; } public static void main(String[] args) { int result = MathUtils.max(10, 20); // 直接通过类名调用静态方法 System.out.println("Max is: " + result); // 输出: Max is: 20 } }
3. 静态初始化块
静态初始化块是在类加载时执行一次的代码块,用于对静态变量进行初始化操作。
public class StaticInitializer { public static int value; static { // 静态初始化块 value = 42; System.out.println("Static block initialized."); } public static void main(String[] args) { System.out.println(StaticInitializer.value); // 输出: 42 } }