Java基础——面向对象编程一:封装

面向对象编程三大特征:

  封装,继承,多态

类:属性(成员变量),方法(函数)

对象:类的实例化

调用:对象.属性, 对象.方法

注:对象的成员变量是在堆中,不是在栈中哦!

 

可变个数的形参

  格式:方法名(参数的类型名 ...参数名)(方法的参数部分有可变形参,需要放在形参的最后, 且最多一个

  注:使用可变多个形参的方法方法的形参使用数组是一致的,不能构成重载,编译器会认为是一样的函数。

    public void sayHello(String ... str) { }  //可变多个形参的方法

    public void sayHello(String[] ss) { }    //方法的形参使用数组

 

方法的参数传递

  传递参数的值不行,必须传递参数的地址(引用类型:数组的地址、类的属性)

  swap(int[] arr, int i, int j);arr为数组,i, j 分别为位置

  swap(int d.i, int d.j);d是一个类,i, j分别为类d的属性

  swap(int arr[i], int arr[j]); 错误做法,传递的只是一个值

1.封装与隐藏

  如果直接通过“对象.属性”方式对属性赋值的话,可能出现不满足实际情况的意外,考虑“对象.方法”形式,来控制对象的属性。(实际情况中,对属性的要求可以通过方法来实现)

    解决方法:(1)将类的属性私有化(private),(2)提供公共的(public) 方法来实现(setter & getter)

  四种访问权限修饰符:

      

2.类的第三个成员:构造器(constructor  构造方法)

   其实就相当于C++中的构造函数

  1.创建对象

  2.给类的属性赋值

  Java中,每个类至少一个构造器

  默认构造器的修饰符与所属类的修饰符一致

  显示定义构造器后,系统不提供默认构造器

  一个类可以创建多个重载的构造器

  父类的构造器不可被子类继承

 

3.类对象的属性赋值的先后顺序:

  属性的默认初始化 >  属性的显式初始化> 构造器给属性初始化 > 通过“对象.方法”的方式给属性赋值

 4.关键字:

  (1)this :表示当前对象(实例化的类)或当前正在创建的对象

       可以调用类的属性,方法和构造器。

       在方法内部使用,即这个方法所属对象的引用。

       在构造器内部使用“this(形参)”的方式显式的调用本类中其他重载的指定的构造器。

          1.使用this(), 必须在构造器的首行

          2.若一个类中有n个构造器,那么最多有n-1个构造器中能使用this。

      当在方法内部需要调用该方法的对象时,就用this

class Person {
  private String name;
  private int age;
  //在构造器内部使用“this(形参)”的方式显式的调用本类中其他重载的指定的构造器。
  Person(String name){
  this.name = name;
}
  Person(String name, int age){
  this(name);    //调用的是上面那个重载的构造器
  this.age = age;
}
  public setName(String name){     this.name = name;//避免重名的时候系统辨别不清楚   } 
};
   

  (2)package: 声明源文件所在的包,写在程序的第一行

      每“.”一次,表示一层文件目录

      包名都要小写

  (3)import:

    1)显式导入指定包下的类或接口

    2)写在包的声明和源文件之间

    3)如果需要引入多个类或接口,并列写出来

    4)如果导入的是java.lang包下的,如System, String, Math等,就不用显式的声明

    5)java.util.*

    6)处理同名类的导入:在util和sql包下同时存在Date类,则一个使用import,另外一个只能显式的调用new java.sql.Date(12546121654L)

    7)import static表示导入指定类的static的属性或方法

    8)关于子包:import java.lang.*只能导入lang包下的所有类或接口,不能导入lang的子包下的类或接口。

 

 

JDK中主要的包介绍

1. java.lang----包含一些Java语言的核心类,如String、Math、Integer、 System和Thread,提供常用功能。

2. java.net----包含执行与网络相关的操作的类和接口。

3. java.io ----包含能提供多种输入/输出功能的类。

4. java.util----包含一些实用工具类,如定义系统特性、接口的集合框架类、使用与日期日历相关的函数。

5. java.text----包含了一些java格式化相关的类

6. java.sql----包含了java进行JDBC数据库编程的相关类/接口

7. java.awt----包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界 面(GUI)。

8. java.applet----包含applet运行所需的一些类。

 

posted @ 2017-11-02 17:30  SkyeAngel  阅读(264)  评论(0编辑  收藏  举报