java-面向对象

发布时间:2024年01月12日

?什么是类?什么是对象?

? ?- 现实生活中是由很多很多对象组成的,基于对象抽出了类

? ?- 对象:软件中真实存在的单个个体/东西

? ? ?类:类别/类型,代表一类个体

? ?- 类是对象的模子,对象是类的具体的实例

? ?- 类中可以包含:

? ? ?- 对象的属性/特征-----------------------成员变量
? ? ?- 对象的行为/动作-----------------------方法

? ?- 一个类可以创建多个对象

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();
? ?
? ? ? ?}
? ?}

?方法的重载(overload/overloading)

? ? ?- 发生在同一类中,方法名相同,参数列表不同
? ? ?- 编译器在编译时会根据方法的签名自动绑定方法

? ?//重载的演示
? ?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)对象时被自动调用
? ?- 若自己不写构造方法,则编译器默认提供一个无参构造方法,若自己写了构造方法,则不再默认提供
? ?- 构造方法可以重载

? ? 2. this:指代当前对象,哪个对象调用方法它指的就是哪个对象

? ?? ? ? ? ? ?只能用在方法中,方法中访问成员变量之前默认有个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:

表示空,没有指向任何对象,若引用的值为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中最基本的组织单元。一个类是对象的蓝图或模板,它定义了对象的属性和行为。

类有以下几个特点:

  1. 类是由成员变量(属性)和成员方法(行为)组成的。
  2. 类可以用来创建多个对象,每个对象都具有相同的属性和方法。
  3. 类可以被其他类继承,从而扩展其属性和方法。
  4. 类可以被封装,即将类的实现细节隐藏起来,只暴露必要的接口。

类的语法结构如下:

[修饰符] class 类名 {
    // 成员变量
    [修饰符] 类型 变量名;

    // 构造方法
    [修饰符] 类名(参数列表) {
        // 构造方法的实现
    }

    // 成员方法
    [修饰符] 返回类型 方法名(参数列表) {
        // 方法的实现
        [return 返回值;]
    }
}

? ? ? 其中,修饰符可以是publicprivateprotected等,用来控制成员的访问权限。成员变量定义了类的属性,可以是基本数据类型或引用数据类型。成员方法定义了类的行为,可以访问和修改成员变量,也可以调用其他方法。

? ? ? ? ?类的实例化是通过使用new关键字创建一个对象,并调用构造方法进行初始化。对象可以访问成员变量和成员方法,使用.运算符进行访问。

? ? ? 类的继承是通过使用extends关键字实现的,子类可以继承父类的属性和方法,并可以添加自己的属性和方法。一个类只能继承一个父类,但可以实现多个接口。

? ? 类的封装是通过使用private关键字实现的,将类的实现细节隐藏起来,只能通过公共的方法进行访问。这样可以提供更好的安全性和灵活性。

?


?

文章来源:https://blog.csdn.net/Flying_Fish_roe/article/details/135489965
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。