? ?- 现实生活中是由很多很多对象组成的,基于对象抽出了类
? ?- 对象:软件中真实存在的单个个体/东西
? ? ?类:类别/类型,代表一类个体
? ?- 类是对象的模子,对象是类的具体的实例
? ?- 类中可以包含:
? ? ?- 对象的属性/特征-----------------------成员变量
? ? ?- 对象的行为/动作-----------------------方法
? ?- 一个类可以创建多个对象
2. 如何创建类?如何创建对象?如何访问成员?
? ?```java
?
?public class Student { //Student类就是我们自己造的一种引用类型
? ? ? ?//成员变量
? ? ? ?String name;
? ? ? ?int age;
? ? ? ?String address;
? ? ? ?//方法
? ? ? ?void study(){
? ? ? ? ? ?System.out.println(name+"在学习...");
? ? ? ?}
? ? ? ?void sayHi(){
? ? ? ? ? ?System.out.println("大家好,我叫"+name+",今年"+age+"岁了,家住"+address);
? ? ? ?}
? ?}
? ?
? ?public class StudentTest {
? ? ? ?public static void main(String[] args){
? ? ? ? ? ?//创建一个学生对象
? ? ? ? ? ?Student zs = new Student();
? ? ? ? ? ?//给成员变量赋值
? ? ? ? ? ?zs.name = "zhangsan";
? ? ? ? ? ?zs.age = 25;
? ? ? ? ? ?zs.address = "河北廊坊";
? ? ? ? ? ?//调用方法
? ? ? ? ? ?zs.study();
? ? ? ? ? ?zs.sayHi();
? ?
? ? ? ? ? ?Student ls = new Student();
? ? ? ? ? ?ls.name = "lisi";
? ? ? ? ? ?ls.age = 24;
? ? ? ? ? ?ls.address = "黑龙江佳木斯";
? ? ? ? ? ?ls.study();
? ? ? ? ? ?ls.sayHi();
? ?
? ? ? ? ? ?//1)创建了一个学生对象
? ? ? ? ? ?//2)给所有成员变量赋默认值
? ? ? ? ? ?Student ww = new Student();
? ? ? ? ? ?ww.study();
? ? ? ? ? ?ww.sayHi();
? ?
? ? ? ?}
? ?}
? ? ?- 发生在同一类中,方法名相同,参数列表不同
? ? ?- 编译器在编译时会根据方法的签名自动绑定方法
? ?//重载的演示
? ?public class OverloadDemo {
? ? ? ?public static void main(String[] args) {
? ? ? ? ? ?Aoo o = new Aoo();
? ? ? ? ? ?o.show(); //编译器根据方法的签名自动绑定方法
? ? ? ? ? ?o.show("zhangsan");
? ? ? ? ? ?o.show(25);
? ? ? ? ? ?o.show("zhangsan",25);
? ? ? ? ? ?o.show(25,"zhangsan");
? ? ? ?}
? ?}
? ?
? ?class Aoo{
? ? ? ?void show(){}
? ? ? ?void show(String name){}
? ? ? ?void show(int age){}
? ? ? ?void show(String name,int age){}
? ? ? ?void show(int age,String name){}
? ? ? ?//int show(){ return 1;} //编译错误,重载与返回值类型无关
? ? ? ?//void show(String address){} //编译错误,重载与参数名称无关
? ?}
? ?- 作用:给成员变量赋初始值
? ?- 与类同名,没有返回值类型(连void都没有)
? ?- 在创建(new)对象时被自动调用
? ?- 若自己不写构造方法,则编译器默认提供一个无参构造方法,若自己写了构造方法,则不再默认提供
? ?- 构造方法可以重载
? ?? ? ? ? ? ?只能用在方法中,方法中访问成员变量之前默认有个this.
? ? ? ? ? ? this的用法:
? ? ? ? ? - this.成员变量名-------------访问成员变量
? ? ? ? ? > 成员变量与局部变量同名时,若想访问成员变量则this不能省略 ? ?
? ? ?class Student {
? ? ? ? ?String name; //成员变量(整个类中)
? ? ? ? ?int age;
? ? ? ? ?String address;
? ? ? ? ?//局部变量(当前方法中)
? ? ? ? ?Student(String name,int age,String address){
? ? ? ? ? ? ?this.name = name;
? ? ? ? ? ? ?this.age = age;
? ? ? ? ? ? ?this.address = address;
? ? ? ? ?}
? ? ?
? ? ? ? ?void study(){
? ? ? ? ? ? ?System.out.println(name+"在学习...");
? ? ? ? ?}
? ? ? ? ?void sayHi(){ ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ?System.out.println("大家好,我叫"+name+",今
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 年"+age+"岁了,家住"+address);
? ? ? ? ? ? ?}
? ? ? ? ?}
? ?- this.方法名()-----------------调用方法(了解)
? ?- this()---------------------------调用构造方法(了解)
表示空,没有指向任何对象,若引用的值为null,则该引用不能进行任何点操作了,若操作则发生NullPointerException空指针异常
? ? ?
? ? 引用类型的数组是一种数组,其中每个元素都是引用类型的对象。引用类型包括类、接口、数组和枚举。
下面是一个示例代码,演示了如何创建和使用引用类型的数组:
public class Main {
public static void main(String[] args) {
// 创建一个字符串数组
String[] names = new String[3];
// 给数组元素赋值
names[0] = "Alice";
names[1] = "Bob";
names[2] = "Charlie";
// 遍历数组并打印每个元素
for (String name : names) {
System.out.println(name);
}
}
}
在这个示例中,我们创建了一个字符串数组names
,它有3个元素。我们使用索引来访问数组元素,并通过赋值运算符将字符串赋给每个元素。然后,我们使用增强for循环遍历数组,并打印每个元素的值。
该代码的输出将是:
Alice
Bob
Charlie
? ? 类是Java中最基本的组织单元。一个类是对象的蓝图或模板,它定义了对象的属性和行为。
类有以下几个特点:
类的语法结构如下:
[修饰符] class 类名 {
// 成员变量
[修饰符] 类型 变量名;
// 构造方法
[修饰符] 类名(参数列表) {
// 构造方法的实现
}
// 成员方法
[修饰符] 返回类型 方法名(参数列表) {
// 方法的实现
[return 返回值;]
}
}
? ? ? 其中,修饰符可以是public
、private
、protected
等,用来控制成员的访问权限。成员变量定义了类的属性,可以是基本数据类型或引用数据类型。成员方法定义了类的行为,可以访问和修改成员变量,也可以调用其他方法。
? ? ? ? ?类的实例化是通过使用new
关键字创建一个对象,并调用构造方法进行初始化。对象可以访问成员变量和成员方法,使用.
运算符进行访问。
? ? ? 类的继承是通过使用extends
关键字实现的,子类可以继承父类的属性和方法,并可以添加自己的属性和方法。一个类只能继承一个父类,但可以实现多个接口。
? ? 类的封装是通过使用private
关键字实现的,将类的实现细节隐藏起来,只能通过公共的方法进行访问。这样可以提供更好的安全性和灵活性。
?
?