博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java基础——面向对象编程一:封装
阅读量:4588 次
发布时间: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

你可能感兴趣的文章
WorkFlow设计篇Step.4—异常处理(续)-WF4.0
查看>>
GNU make manual 翻译( 一百零三)
查看>>
深入浅出 React Native:使用 JavaScript 构建原生应用
查看>>
RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2-> Web版本新增新的用户权限设置界面效率更高、更规范...
查看>>
Foundations of Python Network Programming - 读书笔记系列(3) - Email Services
查看>>
Oracle下建立dblink时的权限问题
查看>>
chrome浏览器,调试详解,调试js、调试php、调试ajax
查看>>
jQuery Ajax 回顾
查看>>
点在多边形内算法,C#判断一个点是否在一个复杂多边形的内部
查看>>
如何在移动设备上搭建服务器承载自己的全景作品?
查看>>
iOS SQLite3数据库操作
查看>>
除了 iOS 和 Android,世界第三大移动系统是什么?
查看>>
35.7. FAQ
查看>>
深搜算法实例:老鼠走迷宫(一)
查看>>
VMWare网络设置的3中方式(转)
查看>>
支付这条线上 谁在赚钱谁在哭?
查看>>
机器学习之朴素贝叶斯分类
查看>>
亚信安全参加第六届全国等保技术大会 态势感知助力“等保2.0”落地
查看>>
【设计模式系列】--抽象工厂
查看>>
JqueryValidate 动态添加验证
查看>>