Java类与对象,你了解多少?

谁能横刀立马,唯我飞牛大将军!

本节主题:Java的类与对象

———————————————————————————————————————————————————————

类与对象的小铺垫

(1)C是面向过程的语言,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题;而Java是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。

(2)面向过程: 1.把冰箱打开 2. 把大象放入 3. 冰箱关起来 面向对象: 打开冰箱,储存,关闭都是对冰箱的操作,是冰
箱的行为。冰箱就是一个对象,所以只要操作冰箱所具备的功能,都要定义在冰箱中

(3)类是什么?对象又是什么?
类就是一类对象的统称。对象就是这一类具体化的一个实例。
简单来说:类是模板,对象是由模板产生的一个实物
面向对象的好处:将复杂的事情变简单了,只要面对一个对象就行

———————————————————————————————————————————————————————

类的创建模块

(1) 声明一个类就是创建一个新的数据类型。
(2)在Java中,类属于引用类型,关键字是class

基本语法

// 创建类
class <class_name>{  
    field;//成员属性
    method;//成员方法
}
// 实例化对象
<class_name> <对象名> = new <class_name>(); 

具体来看看

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 main{
 public static void main(String[] args) {
        Person person = new Person();//通过new实例化对象
        person.eat();//成员方法调用需要通过对象的引用调用
        person.sleep();
        //产生对象     实例化对象
        Person person2 = new Person();
        Person person3 = new Person();
 }
}

———————————————————————————————————————————————————————

类的成员模块

其实类的成员包括很多:字段,方法,代码块,内部类和接口等。这里重点介绍前三个:

1 . 字段(又作:属性,成员变量)

特征:在类中,但是在方法外部定义的变量。

使用 . 访问对象的字段
class Person {
    public String name = "张三"; //字段
    public  int age = 12;
}

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

如果一个对象的字段没有初始化的话, 那么会被设置一个默认的初值.
默认值规则
对于各种数字类型, 默认值为 0.
对于 boolean 类型, 默认值为 false.
对于引用类型(String, Array, 以及自定义类,默认值为null

在这里插入图片描述

注意:如果对null进行 . 操作就会引发异常,因为null是"空引用",类似于C语言中的空指针。

2 . 方法

用于描述一个对象的行为。

class Person {
    public String name;
    public  int age ;
    public void show(){
        System.out.println("吃饭");
    }
}

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

方法中还有一种特殊的方法称为 构造方法 (construction method)
在实例化对象的时候会被自动调用到的方法, 方法名字和类名相同, 用于对象的初始化.
虽然能将属性就地初始化, 但是有些时候可能需要进行一些更复杂的初始化逻辑, 那么就可以使用构造方法.后面会详细介绍构造方法的语法.

3 . static关键字

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

Java的静态属性是相对于类来说的,与对象无关。换言之,同一个类的不同实例共用一个静态属性

3.1 修饰属性
class TestDemo{
    public int a;
    public static int count; }
public class main{
    
 public static void main(String[] args) {
        TestDemo t1 = new TestDemo();
        t1.a++;
        TestDemo.count++;
        System.out.println(t1.a);
        System.out.println(TestDemo.count);
        System.out.println("============");
        TestDemo t2 = new TestDemo();
        t2.a++;
        TestDemo.count++;
        System.out.println(t2.a);
        System.out.println(TestDemo.count);
   }
}
运行结果:
1
1
=============
1 
2

这里就能看的出来同一个类的不同实例共用一个静态属性

在这里插入图片描述
count存储在方法区,被static所修饰,所有类共享。且不属于对象;访问方式:类名.属性

3.2 修饰方法

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

1.静态方法属于类,而不属于类的对象。
2.可以直接调用静态方法,而无需创建类的实例,访问方式:类名.方法名。
3.静态方法可访问静态数据成员 ,并可以改变静态数据成员的值

class Person {
    public String name;
    public  int age ;
    public static void show(){
        System.out.println("吃饭");
    }
}

class Test {
    public static void main(String[] args) {
                Person.show();
    }
}

注意
. 静态方法不能直接使用非静态数据成员或调用非静态方法(非静态数据成员和方法都是和实例相关的).
. this和super两个关键字不能在静态上下文中使用(this 是当前实例的引用, . . super是当前实例父类实例的引用, 也是和当前实例相关
. 我们曾经写的方法为了简单, 都统一加上了 static. 但实际上一个方法具体要不要带 static, 都需要是情形而定.
. main 方法为 static 方法

———————————————————————————————————————————————————————

未完待续,明天补上!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值