博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java基础——面向对象编程一:封装
阅读量:4585 次
发布时间:2019-06-09

本文共 2343 字,大约阅读时间需要 7 分钟。

面向对象编程三大特征:

  封装,继承,多态

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

对象:类的实例化

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

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

 

可变个数的形参

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

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

    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运行所需的一些类。

 

转载于:https://www.cnblogs.com/SkyeAngel/p/7773357.html

你可能感兴趣的文章
可恶的Math.random()
查看>>
Netty线程模型
查看>>
查找->动态查找表->键树(无代码)
查看>>
关于 angular 小心得
查看>>
DDD的"waiting until GDB gets ready"
查看>>
简单解决 Javascrip 浮点数计算的 Bug(.toFixed(int 小数位数))
查看>>
laravel错误1071 Specified key was too long; max key length is 1000 bytes
查看>>
正则表达式,的简单应用
查看>>
iOS开发~CocoaPods使用详细说明
查看>>
如何解决浏览器兼容问题
查看>>
必须输入大于0的整数
查看>>
shell杂记
查看>>
使用dom4j技术对xml文件的基本操作
查看>>
C# 属性控件2
查看>>
asp.net 站点在Apache下的配置,就这么简单
查看>>
开源 免费 java CMS - FreeCMS1.9 移动APP生成网站列表数据
查看>>
java中==和equals
查看>>
CCActionPageTurn3D
查看>>
python random
查看>>
esp32-智能语音-cli(调试交互命令)
查看>>