Java类和对象

面向对象(Object Oriented)简称OO,是软件设计中的一种思想(思维模式)。


面向对象编程(Object Oriented Programming),简称OOP。


要理解OO,就要先理解对象和类的概念。




对象由两部分组成:静态的特征、 动态的行为。


静态的特征-->属性   每个对象的每个属性都拥有特定值。




动态的行为-->方法   一般一个行为用一个方法来实现。




(小结)-->对象由两部分组成:属性、方法。


java使用clsss来定义类:(java的类的{}最后面没有“;”作为结尾,这个和C++不同)


格式:


class 类名{//此处类名不能使用Java关键字 不能用包含空格或“.”等特殊符号,可以使用汉字(不


推荐),推荐首字母大写,首字符可以是字母、“_”或“$”,不能是数字开头。


//定义属性部分
属性1的类型 属性1;
属性2的类型 属性2;
...
属性3的类型 属性3;


//定义方法部分
方法1;
方法2;
...
方法3;
}
一个类中的属性的作用范围就是这个类中  从“{”到“}”中的任何位置都作用到。




当我们定义好了一个类之后, 这个类也就是一种数据类型了,可以像int a; double b;等等这样来使


用。




我们自己定义出来的类型都是引用类型 ,所以直接  “类型  对象;”这样之后还不能使用   这时只是


在栈里面开辟了空间   在堆里面还没有开辟空间   所以还需要“对象 = new 类型名();”




一个java文件里面可以定义多个类
最规范的写法是 一个java文件中写一个类   然后类名和java文件名相同


假设自己定义了一个Student类
然后写了一句Student student = new Student();   
//这句话等号前面的是在栈中   等号后面的则是在堆中




想要调用方法的时候必须先要创建对象,通过对象来调用方法。
引用型的数据类型一定要new。!




一个java文件里面可以写多个class   但是如果其中有一个类里面包含main方法  那么这个文件名字就


要换成   包含main方法的类的名字




先有类后有对象   调用属性和方法的时候要先有对象




成员变量(非静态):存储在堆内存中,随着对象的存在而存在。当对象编程垃圾被回收时, 该对象


中的成员变量会消失。也就是说没有对象就没有属性


(方法中的)局部变量:存储在栈内存中,当方法被调用,或者语句被执行的时候,才存在。


成员变量:在堆内存中有默认初始化值。//如果是int型属性  它的默认初始化值一定是0
局部变量:必须手动初始化后,才可以被使用。


在类的内部调用:
在同一个类的内部  方法可以直接通过方法名调用这个类中的其他方法
在类的外部调用:
在类的外部调用一个类中的方法   一定要先定义这个类的对象   通过对象来调用这个类中的方法




面向过程是一种以过程为中心的编程思想,他们不支持面向对象“三大特性”(封装、继承、多态)。


面向过程就是分析出解决问题所需要的步骤,然后用方法把这些步骤一步一步实现,使用的时候一个一


个一次调用就可以了。


PO指的是面向过程   OO指的是面向对象


举个例子“把大象放进冰箱”


PO:
1.打开冰箱门
2.把大象放进去
3.关上冰箱门


OO:
1.没有冰箱先定义冰箱
2.没有大象先定义大象
3.没有人先定义人
4.定义开门行为
5.定义放大象行为
6.定义关门行为


//OO思想更加贴近现实生活




面向对象的三大特征之一:封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过


该类提供的方法来实现对隐藏信息的操作和访问;
封装的好处:
1.隐藏类的实现细节
2.只能通过规定方法访问数据
3.方便加入控制语句
4.方便修改实现




private修饰符使一个访问权限修饰符
用于修饰类中成员(属性和方法) 
被私有化的成员只在本类中有效访问
当成员私有后,提高了安全性,但是访问权限降低了。这时可以通过getter/setter方法间接对其进行访问。
好处是:可以在方法中对成员变量进行控制。






类的构造函数:


在自定义的一个类中,


如果自己写了带参的构造函数,  那么最好再写一个 不带参的构造函数,因为只要我们写了构造函数


,那么java就不会再自动加一个无参构造方法


如果不自己写构造函数  那么Java会自动加一个无参构造方法




构造方法是给对象初始化的
构造方法在对象创建时被执行,自动调用
语法上,构造方法是不需要有返回类型的,包括void,且构造方法名跟类名一样




构造方法极少私有化   大多数情况下都是公有化




而普通方法私有化则是很常见的




一般一个标准的类中,需要包含以下内容:
1.若干个私有化的属性;
2.若干个无参和有参的构造方法;
3.若干个getter/setter方法;
4.功能方法


书写顺序无要求,不过最好的顺序就是上面这个编号的顺序




初始化对象属性的方式有以下三种:
1.构造方法
2.setter方法
3.在类中声明属性时直接赋值(不建议使用)




对象在调用方法或者属性时要用.操作符


当构造函数中参数的名字和属性中的名字一样是, 可以用this表示当前对象,
一般为了保持可读性,都会是构造函数中的参数名和属性名一致。




在方法中, 可以使用this关键字引用成员方法, 一般很少这样做,默认就有。


!!!注意:如果我们想要在一个构造方法中对另一个构造方法进行调用的时候,不能在其构造方法中


直接类名(参数)这样调用,而是通过this调用另一个构造方法,用法是this(参数列表),这个只能


用在类的构造方法中,别的地方不能这么用。




匿名对象:是对象的简化形式,是没有名字的对象(只要是简化形式就有一定局限性)
匿名对象由于没有名字,所以一般用于那种只需要调用以此方法的场景(传参)
new Car().run();   (调用情况:当需要调用一个对象的某个方法,且只需要调用一次)




几种基本数据类型:int、 douable、 char、 boolean、
几种引用数据类型:String、  数组、  自定义的类、 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值