六 . 面向对象

六 . 面向对象

一 . 对象

1.什么是程序?
  程序是为了模拟现实世界,解决现实问题而使用计算机语言编写的指令集合。(微信 网易云等)
2.世界是由什么组成的?
  在程序猿的眼里,世界是由无数个对象组成的。
2.什么是对象(object)?
  某一类事物的具体存在。(对象即引用)
  (1)特征:称为属性,一般为名词,代表对象有什么。
  (2)行为:称为方法,一般为动词,代表对象能做什么。
3.程序中的对象:
  在程序当中,必须具有和现实中相同的对象,用以模拟现实世界;
  使用程序中的对象代表现实中的对象,并执行操作,进而解决现实问题。
4.对象的创建:
  类名 对象名 = new 类名();(对象名也叫引用名)
  访问属性:对象名.属性名 = 值;//赋值
  调用方法:对象名.方法名();
5.面向对象思想
  (1)符合人们思考习惯,将复杂的事情简单化,把人们从执行者变成了指挥者。
  (2)面向对象的程序开发就是不断的找对象,使用对象,指挥对象做事情的过程。没有对象就创建一个。
  (3)思想特征:封装(encapsulation) 继承(inheritance) 多态(polymorphism)

二 . 类

1.类:
  Java中通过”类“来描述事物,类主要由属性和行为构成。
  概念:是一系列具有相同属性和行为的事物的统称。
2.类的抽取:
  在一组相同或类似的对象中,抽取出共性的特性和行为,保留所关注的部分。
  注:在类中方法外所定义的变量称为实例变量。
3.类的定义:
  class{
  属性:通过变量表示,又称为实例变量。
  语法:数据类型 属性名;
  位置:类的内部,方法的外部。

  方法:通过函数表示,又称实例方法。
  语法:public 返回值类型 方法名(形参){

            //方法的主体(成员方法是有地址值的)
        }
  }
  注意:不再书写static。
4.类与对象的关系
  类:定义了对象应具有的特征和行为,类是对象的模板。(类中可定义多个对象)
  对象:拥有多个特征和行为的实体,对象是类的实例。
思考:学习局部变量时必须先赋值再使用,否则编译错误。对于实例变量而言,未赋值并不会出现编译错误,能否直接访问?
  实例变量的默认值:
  整数:0 小数:0.0 字符:\u0000 布尔:false 其他:null
5.实例变量和局部变量的区别:
                  局部变量                       实例变量
  定义位置    方法或方法内的结构当中              类的内部,方法的外部
  默认值           无默认值                    字面值(与数组相同)
  使用范围    从定义行到包含其结构结束                本类有效
  命名冲突         不允许重名               可与局部变量重名,局部变量优先
6.实例方法
  对象的实例方法包含两部分:方法的声名和方法的实现。
  方法:
     (1)代表对象能做什么,即如何实现对应的功能。
     (2)组成:修饰符 返回值类型 方法名(形参列表)
package Winter.class1;
//类的创建
public class Constructor01 {
    //属性
    String name;
    int age;
    String sex;
    double score;
    //构造方法
    public Constructor01(){
        //初始化工作
        name = "melody";
        age = 20;
        sex = "男";
        score = 88.8;
    }
    //方法
    public void sayHi(){
        System.out.println("大家好,我是"+name+","+sex+"我今年"+age+"岁了!,考了"+score+"分");
    }
}
public class ConstructorTest01 {
    //测试类
    public static void main(String[] args) {
        Constructor01 xiaoming = new Constructor01();
        /**
         * new的解释:
         * (1)在内存中开辟一个空间,并赋值为默认值。
         * (2)调用构造方法进行初始化
         * (3)把对象地址赋值给xiaoming
         */
        xiaoming.sayHi();
    }
}

三 . 方法重载

方法重载(Overload):
   一个类中定义多个相同名称的方法(通过改变参数类型)
   eg:人对象的吃行为,吃饭和吃药的过程就存在差异。
   要求:方法名称相同。
        参数列表不同(类型,个数,顺序)。
        与访问修饰符,返回值类型,变量名无关。
   调用带有重载的方法时,需要根据传入的实参去找到与之匹配的方法。
   好处:屏蔽使用差异,灵活,方便。
   注意:只是参数名称不同,并不能构成方法的重载
package Winter.class1;
/**
 *方法重载
 * (1)方法名相同
 * (2)参数列表不同(类型,个数,顺序)
 * (3)与返回值,修饰符,变量名无关
 */
public class Overload01 {
    public void show(){
        System.out.println("无参方法");
    }
    public void show(int num){
        System.out.println("有参方法"+num);
    }
    public void show (String name){
        System.out.println("有参方法"+name);
    }
    public void show(int num,String name){
        System.out.println("1:"+num+"2:"+name);
    }
    public void show(String name,int num){
        System.out.println("1:"+name+"2:"+num);
    }
}
package Winter.class1;
//测试类
public class OverloadTest01 {
    public static void main(String[] args) {
        //创建对象
        Overload01 o1 = new Overload01();
        o1.show(12);
        o1.show("melody");
        o1.show(200,"melody");
        o1.show("melody",200);
    }
}

四 . 构造方法

构造方法(构造器):
   类中的特殊方法,主要用于创建对象。
   特点:
     名称与类名完全相同。
     没有返回值类型。
     创建对象时,调用构造方法,不可通过"."调用。
   注意:
     如果没有在类中显示定义构造方法,则编译器默认提供无参构造方法。
package Winter.class1;

public class Constructor01 {
    //属性
    String name;
    int age;
    String sex;
    double score;
    //构造方法
    public Constructor01(){
        //初始化工作
        name = "melody";
        age = 20;
        sex = "男";
        score = 88.8;
    }
    //方法
    public void sayHi(){
        System.out.println("大家好,我是"+name+","+sex+"我今年"+age+"岁了!,考了"+score+"分");
    }
}

五 . Java程序的内存分配

一.Java程序的内存分配
   1.方法区(Method Area)
     存储可运行的class文件,包含方法,静态成员,常量等
   2.栈(Stack)
     方法运行时使用的内存,特点是”后进先出“,即最先进入栈的方法最后出栈,例如main方法。
   3.堆(Heap)
     存储new出来的数组或对象。
   4.本地方法栈
     JVM在调用操作系统功能时使用,与开发无关。
   5.寄存器
     CPU使用,与开发无关。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值