java基础之面向对象的介绍

来源:互联网 发布:光怪兽普利茨墨淘宝 编辑:程序博客网 时间:2024/06/05 07:56

1.面向对象的概念

举例:大象装进冰箱。

  • 面向过程
    打开冰箱门
    放进去
    关上冰箱门。
    面向过程思想强调的是过程(动作)
    c语言就是面向过程
  • 面向对象
    强调的是对象(实体)。
    冰箱打开
    冰箱存储
    冰箱关闭
    常见:C++ Java C#
    这里写图片描述
  • 面向对象特点
    1.面向对象就是一种常见的思想,符合人们的思考习惯。
    2.复杂问题简单化。
    3.让曾经在过程中的执行者,变成了对象中的指挥者。

2.类与对象的关系

这里写图片描述
只要明确该事物的属性和行为并定义在类中即可
对象:其实就是该类事物实实在在存在的个体。
类与对象之间的关系?
类:事物的描述
对象:该类事物的实例,在java中通过new来创建。

  • 类与对象的体现
public class CarDemo {    public static void main(String[] args) {        //在计算机中创建一个Car的实例,通过new关键字        Car c = new Car();//c是一个类类型的引用变量,指向了该类的对象        c.num = 4; //要使用类中的属性和方法,可以使用对象名.成员的形式完成调用        c.color="red";        c.run();    }}class Car {    int num;//轮胎数量    String color;//汽车颜色    public void run() {        System.out.println(num +"..."+ color);    }}

定义类其实就是在定义类中的成员。
成员:成员变量(属性)、成员函数(行为)

对象在内存中的体现:
这里写图片描述

  • 成员变量和局部变量的区别:
    1.成员变量定义在类中,整个类中都可以访问。
    局部变量定义在函数,语句,局部代码块中,只在所属的区域有效。
    2.成员变量存在于堆内存的对象中。
    局部变量存在于栈内存的方法中。
    3.成员变量随着对象的创建而存在,随着对象的消失而消失。
    局部变量随着所属区域的执行而存在,随着所属区域的结束而释放
    4.成员变量有默认的初始值,局部变量没有默认初始值。
  • 匿名对象
    匿名对象是对象的简化形式
    匿名对象的两种使用情况
    当对对象的方法仅进行一次调用的时候
    匿名对象可以作为实际参数进行传递

3.封装

  • 概念
    指隐藏对象的属性和实现细节,仅对外提供公共的访问方式。
  • 好处:
    提高重用性
    提高安全性
    将变化隔离
    便于使用
  • 封装原则:
    将不需要对外提供的内容都隐藏起来。
    把属性都隐藏,提供公共方法对其访问。
  • private关键字:
    是一个权限修饰符。
    用于修饰成员(成员变量和成员函数)
    被私有化的成员只能在本类中访问。
  • 常用:
    将成员变量私有化,对外提供对应的set,get方法对其进行访问,提高对数据访问的安全性。

4.构造函数

构建创造对象的时候调用的函数。
- 特点:
1.函数名和类名相同
2.不用定义返回值类型
3.不可以写return语句
- 作用:
给对象进行初始化。
- 注意:
1.默认构造函数的特点
2.多个构造函数是以重载的形式存在的。
一个类中如果没有定义过构造函数啊,那么该类中就会有一个默认的空参构造函数。如果在类中定义了指定的构造函数,那么类中的默认构造函数就没有了。
- 一般函数和构造函数什么区别呢?
构造函数:对象创建时,就会调用与之对应的构造函数,对对象进行初始化。
一般函数:对象创建后,需要函数功能时才调用。
构造函数:对象创建时,会调用并且只调用一次。
一般函数:对象创建后,可以被调用多次。
- 什么时候定义构造函数呢?
在描述事物时,该事物一存在就具备的一些内容,这些内容都定义在构造函数中。
构造函数可以有多个,用于对不同的对象进行针对性的初始化.
多个构造函数在类中是以重载的形式来体现的。
- 细节:
1,构造函数如果完成了set功能。set方法是否需要。
2,一般函数不能直接调用构造函数。
3,构造函数如果前面加了void就变成了一般函数。
4,构造函数中是有return语句的。

5.this关键字

  • 特点:
    this代表所在函数所属对象的引用。
    换言之,this代表本类对象的引用。
    什么时候使用this关键字呢?
    当在函数内需要用到调用该函数的对象时,就用this。

例如:

public class Demo8 {    public static void main(String[] args) {        Person p = new Person();        p.setAge(22);        p.speak();    }}/** * 人的属性:age  行为:speak * @author Administrator * */class Person {    //私有属性    private int age;    //无参构造    public Person(){}    //有参构造    public Person (int age) {        this.age = age;    }    //对外提供setter和getter方法    public void setAge(int age) {        if(age > 0 && age < 130) {            this.age = age;        }else {            System.out.println("年龄输入错误");        }    }    public int getAge() {        return age;    }    public void speak() {        System.out.println("age = " + age);    }}

6.static关键字

  • 静态代码块。
格式:static{    静态代码块中的执行语句。}

特点:随着类的加载而执行,只执行一次,并优先于主函数。
用于给类进行初始化的。


classPerson {    String name;//成员变量,实例变量    static String country = "CN";//静态变量。类变量    publicvoidshow()    {        System.out.println(Person.country+":"+this.name);    }}

static的特点:
1,static是一个修饰符,用于修饰成员。
2,static修饰的成员被所有的对象所共享。
3,static优先于对象存在,因为static的成员随着类的加载就已经存在了。
4,static修饰的成员多了一种调用方式,就可以直接被类名所调用。类名.静态成员。
5,static修饰的数据是共享数据,对象中的存储的是特有数据。
- 成员变量和静态变量的区别?
1,两个变量的生命周期不同。
成员变量随着对象的创建而存在,随着对象的被回收而释放。
静态变量随着类的加载而存在,随着类的消失而消失。
2,调用方式不同。
成员变量只能被对象调用。
静态变量可以被对象调用,还可以被类名调用。
3,别名不同。
成员变量也称为实例变量。
静态变量称为类变量。
4,数据存储位置不同。
成员变量数据存储在堆内存的对象中,所以也叫对象的特有数据.
静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据.
- 静态使用的注意事项:
1,静态方法只能访问静态成员。(非静态既可以访问静态,又可以访问非静态)
2,静态方法中不可以使用this或者super关键字。
3,主函数是静态的。

  • 静态的使用:
    静态什么时候用?
    1,静态变量。
    当分析对象中所具备的成员变量的值都是相同的。
    这时这个成员就可以被静态修饰。
    只要数据在对象中都是不同的,就是对象的特有数据,必须存储在对象中,是非静态的。
    如果是相同的数据,对象不需要做修改,只需要使用即可,不需要存储在对象中,定义成静态的。
    2,静态函数。
    函数是否用静态修饰,就参考一点,就是该函数功能是否有访问到对象中的特有数据。
    简单点说,从源代码看,该功能是否需要访问非静态的成员变量,如果需要,该功能就是非静态的。
    如果不需要,就可以将该功能定义成静态的。当然,也可以定义成非静态,
    但是非静态需要被对象调用,而仅创建对象调用非静态的
    没有访问特有数据的方法,该对象的创建是没有意义。
原创粉丝点击