Java面向对象(一)

面向对象的思想

完成一个需求的步骤:首先是搞清楚我们要做什么,然后再分析怎么做,最后代码实现。一步一步去实现,而具体的每一步都需要我们去实现和操作。这些步骤相互调用和协作,完成我们的需求。
每一个具体步骤中我们都是参与者,并且需要面对具体的每一个步骤和过程,这就是面像过程最直接的体现。比如C语言就是面向过程的语言。
当需求单一,或者简单时,我们一步一步去操作没问题,并且效率也挺高。可随着需求的更改,功能的增多,发现需要面对每一个步骤很麻烦了。我们可以思考,能不能把这些步骤和功能在进行封装,封装时根据不同的功能,进行不同的封装,功能类似的封装在一起。这样结构就清晰了很多。用的时候,找到对应的类就可以了。这就是面向对象的思想。
举个例子:洗衣服:换下脏衣服—盛水—浸泡—手搓—漂清—晾干
全自动洗衣机------一键洗衣
面向对象的特征:封装 继承 多态;

面向对象的特点:

是一种更符合我们思想习惯的思想。
可以将复杂的事情简单化。
将我们从执行者变成了指挥者。

类和对象的概念

类:是一组相关的属性和行为的集合。
属性就是成员变量;
行为就是成员方法;
对象:是该类事物的具体体现。
举例:
类:学生
对象:班长就是一个对象
类是一个抽象的概念,他不能直接使用,如果要使用,我们需要对类进行实例化,所谓实例化,就是创建该类对象,因为对象才是类的具体表现。定义测试类,再测试类中创建该类对象,使用该类对象,就可以调用类中的属性和功能。

定义一个学生类:

属性: 姓名 , 年龄 , 性别 …
行为: 吃饭 , 睡觉 , 上课 …

public class Student {
    private String name;
    private int age;
    private char sex;
    
    public String getName() {
    	return name;  
    }
 
    public void setName(String name) {
    	this.name = name;
    }

    public int getAge() {
    	return age;
    }

    public void setAge(int age) {
    	this.age = age;
    }

    public char getSex() {
    	return sex;
    }

    public void setSex(char sex) {
    	this.sex = sex;
    }
    public void eat() {
        System.out.println("学生吃饭");
    }

    public void sleep() {
        System.out.println("学生睡觉");
    }

    public void Class() {
        System.out.println("学生上课");
    }
}

private是一个权限修饰符,可以修饰成员变量和成员方法,被修饰的成员只能再本类中访问。因此提供了对应的getXxx()和setXxx()方法。来调用类中的属性和功能。
当我们的局部变量和成员变量相同的时候,如果我们不使用this关键字,那么会导致一个问题:就是局部变量隐藏了成员变量的问题。所以使用this这个关键字,谁调用这个方法,那么该方法的内部的this就代表谁。

定义测试类

public class MyTest {
    public static void main(String[] args) {
        Student student = new Student();//创建对象的格式:类名 对象名 = new 类名();
        student.setName("小明");
        System.out.println(student.getName());
        student.setAge(14);
        System.out.println(student.getAge());
        student.setSex('男');
        System.out.println(student.getSex());
        student.eat();
        student.sleep();
        student.Class();
    }
}

构造方法

创建对象,给对象中的成员进行初始化。
格式特点:
方法名与类名相同。
没有返回值类型,连void都没有。
没有具体的返回值。
注意:
如果我们没有给出构造方法,系统将自动提供一个无参构造方法。
如果我们给出了构造方法,系统将不再提供默认的无参构造方法。
除了上面的setXxx()方法可以给成员变量赋值外,构造方法也可以。

public Student(String name,int age,char sex){
    this.name=name;
    this.age=age;
    this.sex=sex;
}
//在测试类中创建对象后调用构造方法,传递参数赋值
Student student = new Student("小明",15,'男');

static关键字

特点:

a:随着类的加载而加载。
b:优先于对象存在。
c:被类的所有对象共享。
如果某个成员变量是被所有对象共享的,那么它就应该定义为静态的。
举例:
饮水机(用静态修饰)
水杯(不能用静态修饰)
d:可以通过类名调用
其实它本身也可以通过对象名调用。
推荐使用类名调用。
静态修饰的内容一般我们称其为:与类相关的,类成员

注意事项

在静态方法中是没有this关键字的。
静态只能访问静态,非静态可以访问静态的也可以访问非静态的。

三种变量的区别

A:所属不同
静态变量:属于类,所以也称为类变量
成员变量:属于对象,所以也称为实例变量(对象变量)
局部变量:在方法定义中或者方法声明上
B:内存中位置不同
成员变量:在堆内存
局部变量:在栈内存
静态变量:方法区的静态区
C:生命周期
成员变量:随着对象的创建而存在,随着对象的消失而消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
静态变量:随着类的加载而加载,随着类的消失而消失
D:调用不同
静态变量:可以通过类名调用,也可以通过对象调用,推荐使用类名调用
成员变量:只能通过对象名调用
局部变量:不能调用
成员变量有默认初始化值,而局部变量没有默认初始化值,必须定义,赋值,然后才能使用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值