黑马程序员_java_基础_面向对象01



 ——- android培训java培训、期待与您交流! ———-

JAVA自学系列 
期待与您的交流









一、面向对象:

是一种编程思想,与面向过程不同,不过是基于面向过程的

三个特征:

封装

继承

多态

面向对象思想开发,每当需要实现一个功能的时候,就寻求实现该功能的对象,如果没有那么就创建一个

 

类和对象的关系

类:是对现实事物的描述

对象:是这类事物的真实存在

 

类中可以定义变量,也叫做类的成员变量,简单解释为这个类或者说对象的属性,而函数也可以说是这个对象的功能。

成员变量和局部变量的区别就在于存储位置不同,成员变量存在对内存,而局部变量存在栈内存

 

二、匿名对象

当对象的方法只调用一次的时候,可以使用匿名对象来完成,同时匿名对象也可以作为实际参数进行传递

然而如果要对一个对象进行多个成员调用,则必须给对象命名

三、封装

隐藏对象的属性和实现细节,仅对外提供公共的访问方式,即接口

好处:将变化隔离

 便于使用

     提高重用性

 提高安全性

封装的原则:把不需要对外提供的内容隐藏起来,把属性都隐藏,提供公共方法对其访问

封装的一种常见方式:private修饰,即私有属性

一般来说,对象中的属性都设置为私有,如果要对其操作需要调用对象的功能,因此一个对象中的每个属性通常都至少有两种对应的方法,一个是设置,一个是获取。

class 类名

{

private int 成员变量;

public void定义函数()

{

执行语句;

}

}

成员变量为属性,private定义其为私有,即完成对属性的封装

定义函数为功能,public定义其为共有,即可以被外部访问

四、方法

方法即为类或者说对象中的功能

包括普通方法,构造方法,还有构造代码块

其中构造方法为函数名与类名完全相同,这类方法是在调用类new一个新的对象的时候变回自动调用,用来给新对象赋初始值

构造方法可以被重载

构造代码块是一种类似构造方法的,方法。构造代码块没有含属性,所以也没有形式参数,因此可以用来给所有类型的对象统一进行初始化赋值,例如:

void

{

属性a=1;

属性b=2;

}

void 类名(int x)

{

属性a=x;

}

void为函数修饰符,构造代码块没有函数名,但是可以使用所有的修饰符进行修饰

类名(int x)为一个构造函数

此时我们给出new对象所有形式的初始值,无论是()(x)(x,y)代码块中的赋值都必然会执行而且是最优先执行,然后再执行相符合的构造方法。

 

五、

this关键字

1.用来区分局部变量和成员变量

int x

void 函数名(x)

{

this.x = x;

}

this.x就代表当前对象的x,而如果没有this.,则x为函数的局部变量x

2.构造函数间的调用

person(String name)

{

this.name = name;

}

person(String name,int age)

{

this(name);//这个this(name),调用上面构造函数中的name

this.age = age;

}

 

六、

static关键字

修饰符,被修饰的属性或者方法将被标记为静态

特点: 随着类的加载而加载

优先于所有的对象存在

被所有对象所共享

可以直接被类名所调用

 

静态方法只能访问静态成员

非静态方法可以访问静态可非静态

静态方法中不可以定义thissuper

 

利:对对像的共享数据进行单独空间存储,节省空间

可以直接被类名调用

弊:生命周期过长

访问存在局限性

 

七、

main关键字

public static void main(String[] args)

作为程序入口

public代表该函数访问权限最大

static代表主函数随类的加载存在

void主函数没有也不需要有返回值

main不是关键字,但是是一个特殊的单词或者说方法

args,只是String[]定义的一个变量,可以随意更改

 

 

 

**************************************************************************************************************************************************************

用一个函数来稍微演示一下面向对象,以下为自定义的一个ObDemo

//ObDemo,作用:演示面向对象相关操作

/*

包含:

私有属性:String obName,int obSize

代码构造块:1

构造函数和其重载:ObDemo(),

  ObDemo(String name),

  ObDemo(String name,int size)

普通函数:obRead(),

  obSetint size,

  obSet(String name)

*/

/*

1.创建类

2.为了演示属性,创建私有类型属性String obName;int obSize

3.创建构造代码块,

4.创建构造函数

5.构造函数的两个重载函数

 

6.两个普通函数,一个用来读取对象属性,一个用来更改对象属性

*/

 

 

class ObDemo

{

//obDemo的私有属性

private String obName;

private int obSize;

//构造代码块,功能是给所有对象进行统一的初始化,优先级最高

{

System.out.println("构造代码块");

}

//构造函数

ObDemo()

{

System.out.println("构造函数||obName:"+obName+";obSize:"+obSize);

}

//构造重载一

ObDemo(String name)

{

obName = name;

System.out.println("构造函数的重载一||obName:"+obName+";obSize:"+obSize);

}

//构造重载二

ObDemo(String name,int size)

{

obName = name;

obSize = size;

System.out.println("构造函数的重载二||obName:"+obName+";obSize:"+obSize);

}

 

//普通函数,读取对象属性

public void obRead()

{

System.out.println("读取对象属性||obName:"+obName+";obSize:"+obSize);

}

//普通函数,设置对象属性,此处先打印对象原属性,然后更改size再打印一次

public void obSet(int size)

{

System.out.println("设置对象属性||obName:"+obName+";obSize:"+obSize);

obSize = size;

System.out.println("size更改为:"+size);

//设置完调用obRed打印结果,同理,上面几个构造函数中,也是可以调用此函数

obRead();

}

public void obSet(String name)

{

System.out.println("设置对象属性||obName:"+obName+";obSize:"+obSize);

obName = name;

System.out.println("name更改为:"+name);

//设置完调用obRed打印结果,同理,上面几个构造函数中,也是可以调用此函数

obRead();

}

}



 

 

然后将一部分代码做如下更改

ObDemo(String name,int size)

{

this(name);

obSize = size;

System.out.println("构造函数的重载二||obName:"+obName+";obSize:"+obSize);

}

 

 ——- android培训java培训、期待与您交流! ———-

JAVA自学系列 
期待与您的交流


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值