【JAVA】类和对象

 🍉内容专栏:【JAVA】

🍉本文脉络:JAVA类和对象

🍉本文作者:Melon_西西

🍉发布时间 :2023.8.11

目录

1.面向对象的初步认知

2.类定义和使用

 3. 类的实例化

 4.this引用

5. 对象的构造及初始化

5.1局部变量在使用之前一定要进行初始化

5.2默认初始化(不建议)

 5.3赋值初始化

5.4构造方法赋值

5.5 就地初始化

6.封装

6.1 访问修饰限定符

 6.2 常见的包

 6.3 静态成员变量

 6.3.1 静态代码块


1.面向对象的初步认知

Java是一门纯面向对象的语言(Object Oriented Program,简称OOP),在面向对象的世界里,一切皆为对象。面 向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。

2.类定义和使用

类是用来对一个实体(对象)来进行描述的,主要描述该实体(对象)具有哪些属性(外观尺寸等),哪些功能(用来干 啥)

在java中定义类时需要用到class关键字。类名注意采用大驼峰(单词首字母均大写)定义

class为定义类的关键字,ClassName为类的名字,{}中为类的主体。

class ClassName{

field; // 字段(属性) 或者 成员变量

method; // 行为 或者 成员方法

}

类中包含的内容称为类的成员。属性主要是用来描述类的,称之为类的成员属性或者类成员变量。方法主要说明类 具有哪些功能,称为类的成员方法。

class PetDog {
public String name;//名字
public String color;//颜色
// 狗的属性
public void barks() {
System.out.println(name + ": 旺旺旺~~~");
}
// 狗的行为
public void wag() {
System.out.println(name + ": 摇尾巴~~~");
}
class student{
    public String name;
    public int age;
    public void eat(){
        System.out.println(name+"吃饭");
    }

}
public class Text01 {
    public static void main(String[] args) {
        student student1 =new student();
        student1.name="ming";
        student1.age=10;
        student1.eat();
        student student2 =new student();
        System.out.println("student1= " +student1.name+student1.age);
    }

}

注意:

1.一般一个文件当中只定义一个类

2. main方法所在的类一般要使用public修饰(注意:Eclipse默认会在public修饰的类中找main方法)

3. public修饰的类必须要和文件名相同

4. 不要轻易去修改public修饰的类的名称,如果要修改,通过开发工具修改

 3. 类的实例化

 用类类型创建对象的过程,称为类的实例化

1.在java中采用new关键字,配合类名来实例化对象:

 2.new 关键字用于创建一个对象的实例.

使用 . 来访问对象中的属性和方法.

3.同一个类可以创建对个实例.

4. 类只是一个模型一样的东西,用来对一个实体进行描述,限定了类有哪些成员. 2. 类是一种自定义的类型,可以用来定义变量

 4.this引用

我们在声明一个属性对应的setXxx方法时,通过形参给对应的属性赋值。如果形参名和属性名同名了,那么该如何在方法内区分这两个变量呢?
解决方案:使用this。具体来讲,使用this修饰的变量,表示的是属性。没有用this修饰的,表示的是形参。

this代表当前对象的引用,要养成使用this的习惯。如果同名,局部变量优先

1. this的类型:对应类类型引用,即哪个对象调用就是哪个对象的引用类型

2. this只能在"成员方法"中使用

3. 在"成员方法"中,this只能引用当前对象,不能再引用其他对象

4.this是“成员方法”第一个隐藏的参数,编译器会自动传递,在成员方法执行时,编译器会负责将调用成员方法 对象的引用传递给该成员方法,this负责来接收

5. 对象的构造及初始化

5.1局部变量在使用之前一定要进行初始化

成员变量在没有初始化的时候都有一个默认值,int 0 ;flout 0.0f doublie 0.0;引用类型null

如下代码:

class Person{
    public String name;
    public int age;
    public void show(){
        System.out.println("名字="+this.name+"年龄"+this.age);
    }
}
public static void main(String[] args) {
      Person p1=new Person();
        p1.show();
    }

 以上代码的输出结果是: 名字=null年龄0

5.2默认初始化(不建议)

用在任何一次对象初始化都希望对象都这样 命名,后续可以更改

class Animal{
    public String name="猫猫";
    public int age =9;
}

 5.3赋值初始化

class student{
    public String name;
    public int age;

}
public class Text01 {
    public static void main(String[] args) {
        student student1 =new student();
        student1.name="ming";
        student1.age=10;
    }
}

5.4构造方法赋值

构造快捷键:alt + insert  或者工鼠标右键->gen.. .. ->constr. . . ..

实例化一个对象时,先为对象分配内存,再调用合适的构造方法

当没有写构造函数时,JAVA会自己提供一个没有参数的构造函数

1. 名字必须与类名相同

2. 没有返回值类型,设置为void也不行

3. 创建对象时由编译器自动调用,并且在对象的生命周期内只调用一次(相当于人的出生,每个人只能出生一次)

4. 构造方法可以重载(用户根据自己的需求提供不同参数的构造方法)

5.构造方法可以有多个,他们之间构成重载关系

this("西红柿" 2);这种写法只能出现在构造方法中,不能自己调用自己,只能出现在当前构造方法的第一行,this代表当前对象的引用(地址)


    public static void main(String[] args) { 
        Teacher t1=new Teacher();
        t1.show();
    }
class Teacher{
   public  String name;
   public int age;
    public Teacher(){
        this.age=27;
        this.name="TT";
    }
    public void show(){
        System.out.println("名字="+this.name+"年龄"+this.age);
    }
}

 在new Teacher()时调用构造函数进行赋值,调用构造函数之后再输出 ti.show

5.5 就地初始化

public class Date {
public int year = 1900;
public int month = 1;
public int day = 1;
public Date(){
}
public Date(int year, int month, int day) {
}
public static void main(String[] args) {
Date d1 = new Date(2021,6,9);
Date d2 = new Date();
}
}

6.封装

面向对象程序三大特性:封装、继承、多态。而类和对象阶段,主要研究的就是封装特性。何为封装呢?简单来说 就是套壳屏蔽细节。

 封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行 交互

6.1 访问修饰限定符

public:可以理解为一个人的外貌特征,谁都可以看得到

default: 对于自己家族中(同一个包中)不是什么秘密,对于其他人来说就是隐私了

private:只有自己知道,其他人都不知道

default:什么都不写时的默认权限

访问权限除了可以限定类中成员的可见性,也可以控制类的可见性

 6.2 常见的包

1. java.lang:系统常用基础类(String、Object),此包从JDK1.1后自动导入。

2. java.lang.reflect:java 反射编程包;

3. java.net:进行网络编程开发包。

4. java.sql:进行数据库开发的支持包。

5. java.util:是java提供的工具程序包。(集合类等) 非常重要

6. java.io:I/O编程开发包。

 6.3 静态成员变量

 static修饰的成员变量,称为静态成员变量,不属于某个具体的对象,是所有对象所共享的。

1. 不属于某个具体的对象,是类的属性,所有对象共享的,不存储在某个对象的空间中

2. 既可以通过对象访问,也可以通过类名访问,但一般更推荐使用类名访问

3. 类变量存储在方法区当中

4. 生命周期伴随类的一生(即:随类的加载而创建,随类的卸载而销毁)

 6.3.1 静态代码块

使用static定义的代码块称为静态代码块。一般用于初始化静态成员变量。

static {
classRoom = "bit306";
System.out.println("I am static init()!");
}
public Student(){
System.out.println("I am Student init()!");
}
public static void main(String[] args) {
Student s1 = new Student();
Student s2 = new Student();
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值