1.面对对象和面向过程

面向过程

优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、 Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
缺点:没有面向对象易维护、易复用、易扩展

面向对象

优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护
缺点:性能比面向过程低

总结:面向对象就是托人办事,面向过程就是自己办事

 

2.什么是对象

对象:热恋时的男女可以被称之为相互为对象。

对不起,单身久了情不自禁

 

在Java语言里面,万物皆对象。

对象:你可以把任何你看到的东西都看作是一个对象。对象是类的一个实例,例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。

就是实例到一个东西就可以被视作对象。

 

现在让我们深入了解什么是对象。看看周围真实的世界,会发现身边有很多对象,车,狗,人等等。所有这些对象都有自己的状态和行为。

拿一条狗来举例,它的状态有:名字、品种、颜色,行为有:叫、摇尾巴和跑。

对比现实对象和软件对象,它们之间十分相似。

软件对象也有状态和行为。软件对象的状态就是属性,行为通过方法体现。

在软件开发中,方法操作对象内部状态的改变,对象的相互调用也是通过方法来完成。

 

面向对象编程也就是找一个一个对象来办事,那么对象从哪里来的??这个稍后再说

 

3. 什么是类

 

类:可以看做是一个模板,用于描述一类对象的行为和状态。

下图中男孩(boy)女孩(girl)类(class),而具体的每个人为该类的对象(object)

 

 

 

 

 

类可以看成是创建 Java 对象的模板

 

 

 

通过上图创建一个简单的类来理解下 Java 中类的定义:

public class Dog {
    String breed;
    int size;
    String colour;
    int age;
 
    void eat() {
    }
 
    void run() {
    }
 
    void sleep(){
    }
 
    void name(){
    }
}

 

一个类可以包含以下类型变量:

  • 局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
  • 成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。
  • 类变量:类变量也声明在类中,方法体之外,但必须声明为 static 类型。

一个类可以拥有多个方法,在上面的例子中:eat()、run()、sleep() 和 name() 都是 Dog 类的方法。

 

构造方法

每个类都有构造方法。如果没有显式地为类定义构造方法,Java 编译器将会为该类提供一个默认构造方法。

在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。

下面是一个构造方法示例:

public class Person {
private double height;

private double weight;

private String name;


public Person() {
/**
* 空参构造器
*/
}

public Person(double height, double weight, String name) {
/**
* 全参构造器
*/
this.height = height;
this.weight = weight;
this.name = name;
}
}

构造方法可以让我们在对象被实例时快速定义对象的属性。

创建对象

对象是根据类创建的。在Java中,使用关键字 new 来创建一个新的对象。创建对象需要以下三步:

  • 声明:声明一个对象,包括对象名称和对象类型。
  • 实例化:使用关键字 new 来创建一个对象。
  • 初始化:使用 new 创建对象时,会调用构造方法初始化对象。

下面是一个创建对象的例子:

 

给person类新增三个行为

 public void  eat(){
        System.out.println("名字是"+this.name+"身高为是"+this.height+"体重为"+this.weight+"在吃饭");
    }
    public void  run(){
        System.out.println("名字是"+this.name+"身高为是"+this.height+"体重为"+this.weight+"在跑步");
    }
    public void  playGame(){
        System.out.println("名字是"+this.name+"身高为是"+this.height+"体重为"+this.weight+"在玩游戏");
        
    }

新建一个类用于测试

public class Test {

    public static void main(String[] args) {
        Person person = new Person(177,130,"tom");
        person.eat();
    }
}

运行结果

 

 

再来一次测试

 public static void main(String[] args) {
        Person person = new Person(177,130,"tom");
//        person.eat();
        person.playGame();
        person.run();
    }

运行结果

 

 

 public static void main(String[] args) {
        Person person = new Person();
//        person.eat();
        person.playGame();
        person.run();
    }

 

 

 

这两个例子已经可以看出来怎么实例对象了

类名  + 对象名  =  new   类名();   这样实例了一个空的对象,里面什么也没有,只有后面通过setter方法来赋值

类名  + 对象名  =  new   类名(属性值);  这样是一个具体的对象,我们已经用构造器对它的属性进行了赋值,所以这个对象就是一个具体的对象。

 

方法

方法也就是我们一个类的行为

 public void  eat(){
        System.out.println("名字是"+this.name+"身高为是"+this.height+"体重为"+this.weight+"在吃饭");
    }
    public void  run(){
        System.out.println("名字是"+this.name+"身高为是"+this.height+"体重为"+this.weight+"在跑步");
    }
    public void  playGame(){
        System.out.println("名字是"+this.name+"身高为是"+this.height+"体重为"+this.weight+"在玩游戏");

    }

public  修饰符    

void  返回值

eat 方法名

后面小括号里面跟参数,大括号跟方法体

 

这样就是一个方法了,也是类的行为

 

当我们实例了一个对象之后,我们就可以通过对象.方法名来调用该类里面的方法。这也是后面我们编程一直要用的东西。

 

 

 

内容来源于网络如有侵权请私信删除