JAVA:面向对象

第一章:什么是面向对象

一 面向对象的定义

1.1 面向对象

面向对象:是一种思想,思维,即思考方式的角度。

1.2 面向对象与面向过程的区别

面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。

可以拿生活中的实例来理解面向过程与面向对象,例如把大象装进冰箱,面向过程的设计思路就是首先分析问题的步骤:1、冰箱门打开;2、大象装进去;3、冰箱门关上。然后针对这些过程使用不同的方法来实现。 而面向对象的设计思路就是:1、对象冰箱开门;2、冰箱装进(传入大象);3、冰箱关门。

                面向过程: 关注"我该如何实现?",直面实现步骤,面相过程
                面向对象: 关注"我该找谁实现?",不关注对象如何实现,值关注对象本身
                面向对象是依托于面向过程的

1.3 面向对象的优点

将复杂的问题简单化
更贴近现实生活中人类的思维角度
面向过程适用于执行者,面向对象适用于管理者

1.4 类与对象 

1.4.1对象

对象:通过对象表示生活中真实存在的事物或实例。比如:手机,冰箱,大象,汽车。

1.4.2类

类:表示图纸或模板,所以又称为图纸类,模板类,实体类。比如:造汽车需要的图纸,手机设计图纸。

1.4.3类的定义

 分析:
            1.手机都能做什么?  功能: 打电话  打游戏  聊天  ....  动词  --> 成员方法(不被static修饰)
            2.手机有属性|特征?  属性: 品牌,颜色,尺寸,价格...     名词  --> 成员变量(存在于对象的堆内存中,所以必须跟随对象使用)

注意: 先有类才有对象,跟随类创建对象。
public class 类名{
    //1.属性-> 成员变量
    修饰符 数据类型 变量名 = 赋值;
    修饰符 数据类型 变量名;
    .....

    //2.功能-> 成员方法(不被static修饰)
    public void|返回值类型 方法名(参数列表){
        实现功能的代码;
        [return 返回值;]
    }
    ...
}

1.4.4创建对象

1.导包 : 指明要使用类型的位置
    不需要导包的类型: 1.java.lang下  2)同包下的类
2.创建对象 : new关键字具有创建对象的能力
    引用数据类型 变量|引用 = new 引用数据类型();
  eg:Class001_Phone phone=new Class001_Phone();

 注意:
        1.基本数据类型的变量=右边为数据值
        2.引用数据类型的变量=右边为对象
        3.成员变量只声明不赋值存在默认值  整数0  小数0.0   boolean:false   char:空字符   引用数据类型: null
public class Class002_PhoneTest {
    public static void main(String[] args) {
        //创建手机对象
        Class001_Phone phone = new Class001_Phone();
        //使用
        //赋值
        phone.brand="华为";
        phone.color="白色";
        phone.price=7000;
        //调用
        System.out.println(phone.brand);
        System.out.println(phone.color);
        System.out.println(phone.price);

        phone.call();
        phone.call();
    }
}

1.4.5对象的内存分析

new关键字创建对象的步骤:

2.1 构造器

2.1.1构造函数 构造方法

作用: 为对象初始化信息(为对象的成员变量赋值)
    使用: 跟随new关键字一起使用,不能单独调用。
   注意:
   方法名称与当前类名一致;
   如果一个类中没有显示的定义构造器,编译器会自动默认提供一个空构造(没有参数的构造器)
   如果存在显示定义的构造器,编译器不会再为类型提供任何构造器了,包括空构造
   
   构造器中可以存在return,根据需求定义,实现提前结束构造器,但是不能带出返回值
   public Dog(String dogName,int dogAge,String dogType){
    System.out.println("这是带参造......");
    if(dogAge<0){
        System.out.println("年龄不合法无法初始化...");
        return;
    }
package com.yjxxt.constructor02;
/*
    构造器|构造函数|构造方法
        特殊的方法
    作用: 为对象初始化信息(为对象的成员变量赋值)
    使用: 跟随new关键字一起使用,不能单独调用
    定义:
        修饰符 类名(参数列表){
        }
    注意:
        构造器不能定义void|返回值
        构造器也是特殊的方法,具有方法重载的特性->构造器的重载
        构造器帮助实现,在通过new关键字创建对象的同时为对象初始化信息
        以后定义模板类,至少提供一个空构造,按需提供带参构造
 */
public class Class001_Constructor {
    public static void main(String[] args) {
        //先创建对象,后赋值
        //1.创建对象
        //Dog dog = new Dog();
            //2.赋值
    //dog.name = "花卷";
    //dog.age = 4;
    //dog.type = "二哈";
 
    //创建对象的同时为成员变量赋值
    Dog dog = new Dog("大白",-2,"萨摩");
        dog.lookDoor();
    //为对象的成员重新赋值
    dog.name = "小白";
    dog.lookDoor();
}
}
class Dog{
    public String name;
    public int age;
    public String type;
    //空构造
/*public Dog(){
    System.out.println("这是空构造......");
}
public Dog(String dogName){
    name = dogName;
}*/
 
public Dog(String dogName,int dogAge,String dogType){
    System.out.println("这是带参造......");
    if(dogAge<0){
        System.out.println("年龄不合法无法初始化...");
        return;
    }
    name = dogName;
    age = dogAge;
    type = dogType;
}
 
public void lookDoor(){
    System.out.println(name+"正在看家...");
}
}

2.2this使用

public Person(String name){//李四
    name=pname;
}

将通过带参构造器创建对象时传入的李四作为参数,将其赋值给p2对象的成员变量name。

2.1.1this.的使用

this.代表当前对象的

this.不可省略,局部变量与成员变量同名的情况下,此时需要通过this.来代表对象的属性(对象的成员变量)

public String name;
public Person(String name){//李四
   this.name=name;//局部对象name,赋值给p2对象的成员变量name;
}

this可以省略,

/*内在的功能*/
public void eat(){
    System.out.println(this.name+"在吃饭");
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值