zoukankan      html  css  js  c++  java
  • 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运行所需的一些类。

  • 相关阅读:
    回顾[2007-09-03 12:58:03]
    关于知音[2007-08-17 20:56:06]
    今天晚上吃散伙饭[2007-06-18 00:24:36]
    上次所料不错[2007-06-13 15:44:47]
    今天真没劲[2007-06-10 17:50:25]
    关于昨晚的梦[2007-05-07 12:12:06]
    iOS 自定义键盘
    iOSQuart2D绘图之UIImage简单使用
    iOS 两种不同的图片无限轮播
    iOS 简单引导界面
  • 原文地址:https://www.cnblogs.com/SkyeAngel/p/7773357.html
Copyright © 2011-2022 走看看