【Java 类与对象——上】


前言

初识类和对象;掌握类的定义方法以及对象的实例化;掌握类中的成员变量和成员方法的使用;掌握对象的整个初识化过程。

一、类与对象的初步认识

现实世界的实体——>可以抽象成主观世界的类别

在Java中把具有相同特性的对象可以归总为一个类,类可以实例化多个对象。

C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。

Java是基于面向对象的,关注的是对象, 将一件事情拆分成不同的对象,靠对象之间交互完成。

面向过程:1)打开冰箱  2)把大象放进去  3)冰箱关起来

面向对象:冰箱是一个对象,打开冰箱、存储、关闭都是对冰箱的操作,是冰箱的行为。

【面向对象概念】

1.面向对象是思考问题的一种思考方式,是一种思想

2.类就是一类对象是统称,对象就是这一类具体化的实例

3.面向对象的好处:将复杂问题简单化,只要面对一个对象就行。

【面向对象设计】

面向对象设计把握一个重要的经验:谁拥有数据,谁对外提供操作这些数据(私有)的方法!

在开发时:找对象,建对象,用对象,并维护对象之间的关系。

总结

面向对象就是用代码(类)来描述客观世界的事物的一种方式,一个类主要包含一个事物的属性和行为。

二、类和类的实例化 

类就是一类对象的统称,对象就是这一类具体化的实例。一个类可以产生无数的对象)

声明一个类就是创建一个新的数据类型,而类在Java中属于引用类型,Java使用关键字class来声明

基本语法:

//创建类
class class_name {
   field;//成员属性、实例属性
   method;//成员方法、实例方法
}

//实例化对象
class_name 对象名 = new class_name ();

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

类的实例化

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

1.类只是一个模型,限定了类有哪些成员

2.一个类可以实例化出多个对象,实例化出的对象占用实际的物理空间,存储类成员变量

3.比如,类实例化出对象就像是用建筑设计图造出房子,类就是设计图,只设计需要什么东西,没有实体建筑存在,同样类也只是一个设计,实例出的对象才能实际存储数据,占用物理空间


例子:

class Person{
   //成员属性
    public int age;
    public String name;
    public String sex;
    public void eat(){  //成员方法
        System.out.println("吃饭!");
    }
    public void sleep(){
        System.out.println("睡觉!");
    }
}
public class Test {
    public static void main(String[] args) {
        Person person = new Person();//通过new实例化对象
        person.eat();//成员方法调用需要通过对象的引用调用
        person.sleep();
        Person person2 = new Person();
        Person person3 = new Person();
    }
}

输出结果:

吃饭!
睡觉!

·new关键字用于创建一个对象实例

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

·同一个类可以创建多个实例

 三、类的成员

类的成员包含:字段、方法、代码块、内部类和接口等

1.字段/属性/成员变量

(1)定义:

在类中,方法外部定义的变量,称为“字段”、“属性”或“成员变量”,用于描述类中包含哪些数据

注意:对一个对象的属性没有设置初始值,那么就会被设置一个默认的处置

- 对于数字类型,默认值为 0

- 对象Boolean 类型,默认值为false

- 对于引用类型,默认值为 null

(2)null

null在java中为“空引用”,表示不引用任何对象,如果对null进行“.”操作就会引发异常

class Person{
    public int age;
    public String name;
   
}
public class Test {
    public static void main(String[] args) {
        Person person = new Person();
        System.out.println(person.name.length());
    }
}

运行结果: 

NullpointerException意思为调用了一个值为null的引用 

(3)成员属性初始化

 大部分时间我们都需要给成员属性设定初始值

class Person{
    public int age = 18;
    public String name = "小明";
    public String sex = "男";
}
public class Test {
    public static void main(String[] args) {
        Person person = new Person();
        System.out.println(person.name);
        System.out.println(person.age);
        System.out.println(person.sex);
    }
}

运行结果

2.方法(method)

方法用于描述一个对象的行为

class Person{
    public String name = "小明";
    public void eat(){
        System.out.println(name+"正在吃饭!");
    }
    public void sleep(){
        System.out.println(name+"正在睡觉!");
    }
}
public class Test {
    public static void main(String[] args) {
        Person person = new Person();
        person.eat();
        person.sleep();
    }
}

此处的eat和sleep方法就是person这个对象具有的一个展示行为。

这样的方法和person实例相关联的,如果创建了其他实例,那么方法的行为就会发生改变

class Person{
    public int age = 18;
    public String name = "小明";
    public String sex = "男";
    public void eat(){
        System.out.println(name+"正在吃饭!");
    }
    public void sleep(){
        System.out.println(name+"正在睡觉!");
    }
}
public class Test {
    public static void main(String[] args) {
        Person person = new Person();
        person.eat();
        person.sleep();
        System.out.println("-------------");
        Person person1 = new Person();
        person1.name = "小红";
        person1.eat();
        person1.sleep();
    }
}

---------------------------------------------------------------------------------------------------------------------------------

方法中还有一种特殊的方法称为构造方法

在实例化对象的时候会被自动调用到的方法,方法名字和类名字相同,用于对象的初始化

构造方法的作用就是产生对象

使用new关键字产生一个对象时:

1.为对象在堆中分配空间

2.调用对象的构造方法为对象成员变量赋值

构造方法语法规则:

1.方法名和类名完全相同

2.构造方法没有返回值声明(不是void)

3.一个类中至少存在一个构造方法,若没有显示定于,编译器会生成一个默认的无参构造

当类中自定义了构造方法,则默认的无参构造就不在生成 

构造方法可以重载

构造方法是为了类中的成员变量赋值,此时的重载只可能是参数的个数不同 

3. static关键字

1.修饰属性 2.修饰方法 3.代码块 4.修饰类

(1)修饰属性 

Java静态属性和类相关,和具体的实例无关。(同一个类的不同实例共用同一个静态属性)、

当一个实例变量被static关键字修饰,它就表示类的属性,该类的所有对象共享这个属性,所有对象的属性值都相同

static修饰的属性在JVM方法区中存储,所有类的对象共享此属性

static修饰的属性,直接通过类名称就可以访问,无需通过对象访问,例:Person.static修饰的属性

注意:不能在一个方法内部定义一个static变量,方法中定义的变量是全局变量,局部变量都在栈中存储,咋可能定义了个既在栈中又在方法区的属性呢。

(2)修饰方法

如果在任何方法上应用static关键字,此方法称为静态方法。

-静态方法属于类,而不属于类的对象

-可以直接调用静态方法,而无需创建类的实例

-静态方法可以访问静态数据成员,并可以更改静态数据成员的值 

class TestDemo{
    public int a ;
    public static int count;
    public static void change(){
        count = 100;
        //a = 10; error 不可以访问非静态数据成员
    }
}
public class Test {
    public static void main(String[] args) {
        TestDemo.change();//无需创建实例对象,就可以调用
        System.out.println(TestDemo.count);
    }
}

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值