面向对象基础(一)

类:class 对象:object , instance。 某个类的对象和某个类的实例是一样的意思。 对象和类的关系:1 特殊到一般,具体到抽象2 类可以看成一

类:class

对象:object , instance。 某个类的对象和某个类的实例是一样的意思。

对象和类的关系:

    1.特殊到一般,具体到抽象

    2.类可以看成一类对象的模板,对象可以看成该类的一个具体实例

    3.类是用于描述同一类形的对象的一个抽象概念,类中定义了这一类对象所具有的静态和动态属性

 

JDK提供了很多类供使用,编程人员也可以定义自己的类。

 

定义类:

  1.属性field 。或者叫做成员变量

      属性的作用范围是整个类体。

      属性的定义格式:

        [修饰符]  属性类型  属性名 = [默认值]

        修饰符可以省略,可以是:public,protected,private,static,final

        属性类型可以是JAVA中任一种任何类型

        属性名为合法标识符即可、

        定义成员变量时可以对其初始化,如果不对其初始化,JAVA使用默认的值对其初始化。

      局部变量与成员变量:

        声明的位置不同,一个在类中,一个在方法中

        作用范围不同 ,当前类的方法,当前方法。不同方法中即使有同名的局部变量也没有关系,互不影响。

        成员变量有默认值,局部变量没有默认值

  2.方法method

  3.构造方法construtor  ,一个在船舰对象时自动调用的特殊方法

      构造器作用:为对象进行初始化(成员变量)工作

      构造器是一种特殊的方法,构造器的方法名必须和类名一致。不能在构造器里调用return。

      通过new关键字调用。与普通方法一样,构造器也可以重载。

  4.其他:代码块 静态代码块 内部块

创建对象:

  1.类名 对象名 = new 类名();

调用类的属性和方法:

  1.对象名.成员变量

  2.对象名.成员方法

 

 

 

this的作用:
• this表示的是当前对象本身,
• 更准确地说,this代表当前对象的一个引用。
• 普通方法中使用this。
• 区分类成员属性和方法的形参.
• 调用当前对象的其他方法(可以省略)
• 位置:任意
• 构造方法中使用this。
• 使用this来调用其它构造方法
• 位置:必须是第一条语句
• this不能用于static方法。
 
 
 
 
在类中,用static声明的成员变量为静态成员变量 ,或者叫做: 类属性,类变量.
• 它为该类的公用变量,属于类,被该类的所有实例共享,在类被载入时被显式初始化,
• 对于该类的所有对象来说,static成员变量只有一份。被该类的所有对象共享!!
• 可以使用”对象.类属性”来调用。不过,一般都是用“类名.类属性”
• static变量置于方法区中!
• 用static声明的方法为静态方法
• 不需要对象,就可以调用(类名.方法名)
• 在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可访问非static的成员。
• 静态方法不能以任何方式引用this和super关键字
 
 
 
为什么需要package?
• 为了解决类之间的重名问题。
• 为了便于管理类:合适的类位于合适的包!
• package怎么用?
• 通常是类的第一句非注释性语句。
• 包名:域名倒着写即可,再加上模块名,并与内部管理类。
• 注意事项:
• 写项目时都要加包,不要使用默认包。
• com.gao和com.gao.car,这两个包没有包含关系,是两个完全独立的包。只是逻辑上看起来后者
是前者的一部分。
 
java.lang
• 包含一些Java语言的核心类,如String、Math、Integer、System和Thread,提供常用功能。
• java.awt
• 包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用
程序的图形用户界面(GUI)。
• java.net
• 包含执行与网络相关的操作的类。
• java.io
• 包含能提供多种输入/输出功能的类。
• java.util
• 包含一些实用工具类,如定义系统特性、使用与日期日历相关的函数。
 
 
为什么需要import?
• 如果不适用import,我们如果用到其他包的类时,只能这么写:java.util.Date,代码量太大,不
利于编写和维护。通过import可以导入其他包下面的类,从而可以在本类中直接通过类名来调用。
• import怎么使用?
• import java.util.Date;
• import java.util.*; //导入该包下所有的类。会降低编译速度,但不会降低运行速度。
• 注意要点:
• java会默认导入java.lang包下所有的类,因此这些类我们可以直接使用。
• 如果导入两个同名的类,只能用包名+类名来显示调用相关类:
• java.util.Date date = new java.util.Date();
 
静态导入
import static java.lang.Math.*;//导入Math类的所有静态属性
• import static java.lang.Math.PI;//导入Math类的PI属性
• 然后,我们可以在程序中直接使用:System.out.println(PI);