Java的封装性就是把对象的属性和对属性的操做结合成一个独立的单位,并尽量的隐藏内部的细节。 它包含两个含义:javascript
1)把对象的所有属性和对属性的操做结合在起,造成一个不可分割的独立单位(即对象)。
Java是一种纯粹的面向对象程序设计语言,除了基本数据类型(如整型、浮点型等),Javn中的数据都以对象的形式存在,将属性和操做封装在对象中,它没有游离于类以外的属性和方法,能够有效实现细节隐藏。java
2)信息隐蔽,即尽量隐蔽对象的内部细节,对外造成一个边界,只保留有限的对外公开接口使之与外部发生联系,这一点经过Java包Java类及其成员的访问权限实现。 能够理解为黑盒子,平常用品之类的商业用品。只给你能够应用的部分。web
类是Java面向对象程序设计中最基本的程序单元。 编写Java程序时,首先建立类,而后经过类建立不一样的对象。 当程序运行时,对象有对应的内存空间存储其具体的属性值,经过对象激活相应的方法(方法访问内存),实现必定的功能。svg
Java文件中中能有一个同名类,且只有它能被public修饰函数
java中经过class关键字进行定义:类声明和类体spa
public class muchu{ //关键字class前能够有访问权限public也能够没有 //类体 }
一、属性的定义
属性的定义分为两种:
基本数据类型
对象类型:经过class关键字定义的对象类型.net
c语言基本数据类型 /位 | Java基本数据类型 /位 |
---|---|
char 1 | char16 |
short 2 | $short16 |
int 4 | int32 |
long 4 | long64 |
longlong 8 | |
float 4 | float8 |
double 8 | double64 |
longdouble 8 | |
boolean1 | |
byte8 |
public class Muchu{ private float x; private float y; }
public class Shankong{ private Muchu mu1; private Muchu mu2; }
·类Muchu两个访问权限为“private”属性,x,y的基本数据类型为float(基本数据类型)。
·类Shankong的两个访问权限位private属性,其为对象类型。其中private表示的属性是私有的,只有该类的内部能够访问。设计
二、方法的定义指针
方法的定义格式包括方法的访问权限、方法名字、方法的参数列表、返回类型和方法体。
·参数类型和方法的返回类型有对象类型和基本数据类型。code
三、构造方法的定义
实质就是 初始化参数
1.)它具备与类名相同的名称
2.)它没有返回值(若是有,则不是构造方法,而是和构造方法同名的成员方法)
3).构造方法的调用时机与通常的方法不一样。通常的方法是在须要时才调用,而构造方法则是建立对象时自动调用,并执行构造方法的内容。所以,构造方法无需在程序中直接调用,而是在对象产生时自动执行。
4).基于上述构造方法的特性,可利用它来对对象的数据成员作初始化的赋值;
5).在类中没有声明任何的构造方法,系统会自动为类加入一个无参的且什么都不作的构造方法,相似于下面的代码:
public Person(){}
6).一但用户自定义了构造方法则系统再也不提供无参构造方法。用户手动添加一个(是否是必定要添加?)
7).构造方法虽然能够被私有了,但并不必定说此类不能产生实例化对象,只是产生这个实例化对象的位置有所变化,即只能在本类中产生实例化对象。
例子:Java编译器为其提供的缺省构造方法
public Muchu(){ }
数据类型 | 缺省值 |
---|---|
基本数据类型 | 0 |
boolean | false |
char | \0 |
对象类型变量 | null |
函数构造方法的定义部分转载于:https://blog.csdn.net/ClinEvol/article/details/82870454
一、对象的声明
Java中的对象相似于c语言的指针,对象变量声明后,系统将分配32位地址空间(4个字节),而且空间为null。
例子:声明类Muchu 的对象变量mu
Muchu mu;
二、对象的建立
new一个对象,只有在对象变量声明后,经过new关键字调用类的的构造函数建立对象,而后后才可使用对象变量。
Muchu mu = new Muchu(x,y);
每次new一个对象都会建立一个类的新的对象,而且分配内存空间。
对象变量的存储地址不可修改,仅仅能够经过访问他的指向的对象的地址。
三、对象的使用
若是要访问对象里的某个成员变量或方法,能够经过下面的语法来实现:
对象名称.属性名 //访问属性 对象名称.方法名() //访问方法
例如,想访问Person类中的name和age属性,可用以下方法来访问:
p1.name; //访问Person类中的name属性 p1.age; //访问Person类中的age属性
所以若想将Person类的对象p中的属性name赋值为“张三”,年龄赋值为25,则可采用下面的写法:
p1.name = "张三" ; p1.age = 25 ;
若是想调用Person中的talk()方法,能够采用下面的写法:
p1.talk(); //调用Person类中的talk()方
Java形参和实参的结合方式为值传递。 与形参的数据类型无关。
假设 经过Muchu muchu1 = new Muchu(100,200);
建立了一个对象m1,定义两个方法changeOne()和changeTwo(),并将muchu1做为实参传递给两个方法。
public static void changeOne (Muchu m1){ m1 = new Muchu(78,156); }
public static void changeTwo(Muchu m1){ m1.setX(15); }
m1做为形参,因为是值传递,实际参数muchu1会把其存储的地址拷贝到形参m1中,此时形参和实参是不一样内存同一地址。
方法changeOne()的调用不会影响实参的和实参指向的对象。(只修改了形参的值,没修改指向的对象的值)
方法changeTwo()的调用不会影响实参,单会影响实参指向的对象。(方法修改了形参指向的对象的属性值)
在Java中,同一个类中的多个方法能够有相同的方法名称,可是有不一样的参数列表,这就称为方法重载(method overloading)。
参数列表又叫参数签名,包括参数的类型、参数的个数、参数的顺序
(有顺序),只要有一个不一样就叫作参数列表不一样。
重载是面向对象的一个基本特性。
public class Demo { //一个普通得方法,不带参数,无返回值 public void add(){ //method body } //重载上面的方法,而且带了一个整形参数,无返回值 public void add(int a){ //method body } //重载上面的方法,而且带了两个整型参数,返回值为int型 public int add(int a,int b){ //method body return 0; } }
经过上面的例子,不难看出,重载就是在一个类中,有相同的函数名称,但形参不一样的函。重载的结果,可让一个程序段尽可能减小代码和方法的种类。
说明:
·参数列表不一样包括:个数不一样、顺序不一样、类型不一样。
·仅仅参数变量名称不一样是不能够的。
·跟成员方法同样,构造方法也能够重载。
·声明为final的方法不能被重载。
·声明为static的方法不能被重载,可是可以被在此声明。
方法名称必须相同。
参数列表必须不一样。
方法的返回类型能够相同也能够不相同。
仅仅返回类型不一样不足以称为方法的重载。
方法重载的实现:
方法名称相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对应的方法,若是匹配失败,则编译器报错,这叫作重载分辨
。
方法重载转于:https://blog.csdn.net/xkfanhua/article/details/80561673