面向对象

什么是面向对象和面向过程?
面向过程:强调每一个功能的实现步骤
面向对象:强调的是对象,然后由对象去调用功能,但是面向对象是基于面向过程的。
例子:你电脑系统要重装,你不会,你朋友会,你就找你朋友帮忙,然后你朋友就帮你装好了,这就是面向对象。
类与对象
类就是一组相关属性和行为(也就是变量方法)的集合,是一个抽象的概念。
对象是一个具体的事物,或者说是类的表现形式,也就是具体存在的个体。
在Java中如何去创建类,创建对象,以及如何使用?
如何创建类:根据需求分析,业务场景分析,需要什么对象,然后根据这个对象来分析,抽象出来一个概念。
如何创建对象类名 对象名=new 类名();
调用对象的属性或者方法格式:
对象名.属性名
对象名.方法名
例子:比如创建一个学生类,首先分析学生的属性有哪些,学号,姓名,性别,年龄等,学生的行为有哪些(行为=方法):学习,吃饭等,根据分析编写Java代码;

Public class Student{//创建学生类
    String sno;//定义String类型的学生编号
    String sname;//定义String类型的学生姓名
    String ssex;//定义String类型的学生性别
    int sage;//定义int类型的学生年龄
    public void study(){//定义学生的学习方法
        System.out.println("我是学生,我爱学习");
    }
    public void eat(){//定义学生的吃饭方法
        System.out.println("我饿了,我要吃饭");
    }
}

创建好学生类之后我们就需要创建一个学生对象来调用,学生的属性和方法,如下所示:

public class StudentTest{//创建一个测试类
    public static void main(String[]args){//创建一个main方法,他是程序的入口
    Student s=new Student();//通过new创建一个对象s
    s.sno="z20170123";//通过对象s为学生的学号赋初始值
    s.sname="李明";//通过对象s为学生的姓名赋初始值
    s.ssex="男";//通过对象s为学生的性别赋初始值
    s.sage=12;//通过对象s为学生的年龄赋初始值
    s.study();//通过对象s调用学生的学习方法
    s.eat();//通过对象s调用学生的吃饭方法
    }
}

在创建对象是new关键字的作用:
1、为对象分配内存空间,将对象的实例变量自动初始化(如果不为实例变量赋初始值的话),实例变量会使用其类型的默认值;如(int 的默认只是 0);
2、如果实例变量在声明是被显式初始化,那它就把初始化值赋给实例变量;
3、调用构造方法;
4、返回对象的引用;
在类中属性分为的变量分为成员变量和局部变量,他两个的区别是:
1、声明位置不同:
成员变量声明在类的方法外部。
局部变量声明在类的方法中或代码块中;
2、在内存中的位置不同
成员变量的位置是在对内存中。
局部变量是在栈内存中。(栈内存:先进后出,里面的变量用完之后,就成了垃圾,被回收);
3、作用于不同
成员变量的作用范围是整个类;
局部变量的作用范围是当前代码块。
还有就是成员变量随着创建对象的存在而存在,消失而消失;
局部变量随着方法的调用而存在,随着方法调用结束而消失;
4、初始化不一样
成员变量有初始化,默认值为其变量类型默认值。
局部变量没有初始化默认值,也就是说局部变量必须定义赋值,才能使用。
例子:在定义一个学生类

Public class Student{
    String sno;//定义成员变量sno
    String sname;//定义成员变量sname
    String ssex;//定义成员变量ssex
    int sage;//定义成员变量sage
    public void study(String name){//定义一个有参的学生的学习方法,其中的name就是一个局部变量
        System.out.println("我叫"+name+我是学生,我爱学习");
    }
}
public class StudentTest{//创建一个测试类
    public static void main(String[]args){//创建一个main方法,他是程序的入口
    Student s=new Student();//通过new创建一个对象s
    s.sno;//调用学生类的成员变量sno,不为其赋值,但是对象s会为其自动初始化为类型默认值
    s.sname;//调用学生类的成员变量sname,不为其赋值,但是对象s会为其自动初始化为类型默认值
    s.ssex;//调用学生类的成员变量ssex,不为其赋值,但是对象s会为其自动初始化为类型默认值
    s.sage;//调用学生类的成员变量sage,不为其赋值,但是对象s会为其自动初始化为类型默认值
    System.out.println(s.sno);
    System.out.println(s.sname);
    System.out.println(s.ssex);
    System.out.println(s.sage);
    s.study("李明");//调用学生类的study方法,并传一个初始值给study方法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值