JavaSe基础(5)-- 类和对象

类与对象

  • 回顾
  • 面向对象与面向过程
  • 对象和类
  • 包和引入

面向对象与面向过程

  • 面向对象 以事件为中心,分析解决事件的步骤,就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,实现的时候一个一个依次调用就可以了
  • 面向过程 以事物为中心,分析某问题需要参与的事物,它具有封装性,继承性以及多态性

案例: 把大象装进冰箱

  • 面向过程: 把冰箱门打开(open) 大象塞进去(put) 关上冰箱门(close)
  • 面向对象: 冰箱(open put close) 大象
  • JavaSe基础(5)-- 类和对象_第1张图片

对象和类

 对象: 在面向对象的思想中 万事万物 都是对象,比如:张三、一个杯子、一只笔等等
        为什么说这是一个杯子 这是一只笔?因为他们具备杯子或笔的特点

        -----》对象 具有明确的属性和行为(方法)

         张三  李四   王五
 年龄:  18     21     100     -------->属性(名词):附属于事物上的一些特征
 性别:  女     男     其他
 身高:  172   180     170

 吃饭:   ....                ---------->行为(动词或动名词):事物具有的动作 --》可以做什么事情 
 睡觉:   。。。
 打豆豆:  。。。   


类: 就是对同一类对象的 属性和行为 的 抽象和总结 
       对象是类的一个实例展现
     张三  李四   王五            ----》人类 / 动物类
     张三  李四   王五   小花猫   ----》动物类

类的格式:

   类: [修饰符]  class  类名{   }
   属性:其实就是变量,所以也可以称为变量, 指的是全局变量(成员变量)---》类的内部 方法的外部
          [修饰符]  数据类型 变量名称 [= 变量的值] ;

   行为:其实就是 方法  --- 其实也是通常所说的  功能
          [修饰符]  返回值数据类型   方法名称( [参数类型  参数名称1, 参数类型  参数名称2,.....] )
          {
                  //逻辑语句
                  [return 返回值] ;
           }

案例:参考上述讲解,创建一个Person类里面含有响应的属性和方法。

创建对象

  • 必须使用 new 关键字创建对象。
  • Person person= new Person ();

使用对象 利用对象调用类中的属性和方法

  • 使用对象(引用) . 成员变量来引用对象的成员变量。
  • person.age
  • 使用对象(引用) . 方法(参数列表)来调用对象的方法。
  • person. setAge(23)
  • 同一类的每个对象有不同的成员变量存储空间。
  • 同一类的每个对象共享该类的方法。

    public class Person {

    private String name;
    private int age;
    private String sex;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    

    }

画内存

  • 基本图
    JavaSe基础(5)-- 类和对象_第2张图片

  • 更改属性值得图

包和引入

Package

  • 做什么的?

    用来管理软件开发中大量的类 和 解决命名冲突问题

  • 怎么写?

    包名:域名倒着写即可,再加上模块名。

其实内部实现就是靠目录结构来做到的。

  • 怎么用?
    通常是类的第一句非注释性语句。

注意事项:

  1. 写项目时都要加包,不要使用默认包。
  2. 包名要小写
  3. com.demo和com.demo.car,这两个包没有包含关系,是两个完全独立的包。只是逻辑上看起来后者是前者的一部分。
  4. 增加package后的编译问题:

    使用:javac  -d   .    Test.java  (会自动在当前目录下生成包对应的子目录)
    java  com.bjsxt.Test,   或者  java   com/bjsxt/Test
    
  5. 当一个类含有包名的时候 该类的完成名称 应该是包名.类名

JDK中的主要包

java.lang-包含一些Java语言的核心类,如String、Math、Integer、System和Thread,提供常用功能。
java.awt-包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)。
java.net-包含执行与网络相关的操作的类。
java.io-包含能提供多种输入/输出功能的类。
java.util-包含一些实用工具类,如定义系统特性、使用与日期日历相关的函数。

import

  • 为什么需要import?

    如果不适用import,我们如果用到其他包的类时,只能这么写:java.util.Date,代码量太大,不利于编写和维护。通过import可以导入其他包下面的类,从而可以在本类中直接通过类名来调用。

  • import怎么使用?

    import  java.util.Date; 
    import  java.util.*;   //导入该包下所有的类。会降低编译速度,但不会降低运行速度。
    

注意要点:

  1. java会默认导入java.lang包下所有的类,因此这些类我们可以直接使用。
  2. 如果导入两个同名的类,只能用包名+类名来显示调用相关类:

    java.util.Date date  = new  java.util.Date();
    static  import 静态属性导入(JDK 1.5后增加, 了解!!!!):
    
  3. 静态导入的作用:用于导入指定类的静态属性
    如何使用:

    import static java.lang.Math.*;//导入Math类的所有静态属性
    import static java.lang.Math.PI;//导入Math类的PI属性
    

然后,我们可以在程序中直接使用:System.out.println(PI);

上面两种导入方式都是为了便于编写代码,提高可维护性。

你可能感兴趣的:(JavaSe基础(5)-- 类和对象)