怎么理解java的面向对象,java面向对象-类与对象
1、什么叫面向对象?
面向对象(OO)是一种常见的编程方法。
面向对象思想的基础是将相关的数据和方法组合成一个新的复合数据类型,然后用新创建的复合数据类型作为项目的基础。
面向对象是一个非常抽象的概念,是相对于面向过程而言的。
过程和对象都是解决问题的思路。
面向过程:强调的是功能行为,一个过程,先做你想做的,再做你想做的;
面向对象:将功能封装成对象,强调具有一定功能的对象;
按照面向对象的思想,任何东西都可以视为对象!
面向对象的三个特征:
包装(封装);
继承(传承);
多形性(多态性)。
我的总结:
面向过程:重点是具体功能的实现;(遗嘱执行人)
面向对象:重点放在功能对象上。(经理)
2、类
类是Java语言的最小编程单位,也是设计和实现Java程序的基础。本节将深入介绍课堂的相关知识。类的概念
类是对一组事物的共同特征和功能的描述。类是一组事物的总体描述,是按照面向对象技术设计时的最小单位,是一个项目最基本的模块。“类”的概念是抽象的,类似于建筑设计中的图纸,是现实需要表现的具体内容的抽象。类只包含框架结构,而不包含具体的数据。所以班级代表的是整体,而不是某个特定的个体。
我的总结:类是抽象的,对象是具体的,有形的!
类别的定义:
[修饰符]类类名{
1~n种施工方法;
0~n个字段;
0~n种方法
}
类实际上是类中对象的定义。
该对象包含:
状态;(属性)
功能和行为;(方法)
按类描述对象;
状态成员变量;
函数,行为3354方法;
Eg:
类别人员{
//属性
私有字符串名称;
私人年龄;
私有int sal
//方法
公共void show(){
System.out.println(个人情况:姓名年龄sal );
}
}3、构造方法
方法:用于构造一个类的实例(每个类默认都有一个无参数的构造方法,必须由new调用)。
字段:包含在类或对象中的数据,对类状态的描述;
方法:类或对象的特征或行为
角色:
初始化类中的字段,这些字段可用于创建对象。
特点:
方法名与类名相同
不需要定义返回值类型。
不需要写返回语句。
注意:
默认构造方法的特征。
多种构造方法作为重载存在。
构造方法的重载:(适应哪一个是需要的,调用哪一个)
这个(【论据】);调用当前类的构造函数。
注意:这个([自变量]);必须放在构造函数的第一行;
对象的产生格式:
类对象名=新类名();
因为有(),所以是方法。其实就是一种施工方法,而且是非私有施工方法。
比如:
手机cp=新手机();例如:
类别人员{
私有字符串名称;
私人年龄;
私有int sal
公共void show(){
System.out.println(个人情况:姓名年龄sal );
}
公共人物(字符串名称){
super();
this.name=name
}
公共人物(字符串名称,整数){
super();
this.name=name
this.age=年龄;
}
公共人物(字符串名称,整数年龄,整数名称){
super();
this.name=name
this.age=年龄;
this.sal=sal
}
}4、static关键字
特点:
当类加载时加载。
存在于对象之前。
由所有对象共享。
可以通过类名直接调用。
使用注意:
静态方法只能访问静态成员。
但是非静态成员方法可以访问静态成员;
不能在静态方法中使用这个super关键字。
main方法是静态的(可以用类名调用静态main方法,这很正常!但是会陷入死循环,导致内存溢出,jvm会自动停止!)
公共静态void main(String[] agrs){}
可修改的字段和方法。
用static修饰的成员指示它属于该类的公共,而不是该类的单个实例。
静态修饰字段==类字段
静态修饰方法==类方法
对于没有用static修饰的字段和方法,成员属于类的单个实例,而不属于类。
没有静态修饰的字段==实例字段
没有静态修饰的方法==实例方法
以及类和实例访问字段和方法的语法:
访问类成员:类。字段类。方法
访问实例成员:实例。字段实例。方法
我的总结:
静态修饰的字段和方法可以由类或实例调用;
不被static修改的字段和方法只能被实例调用(建议使用:类名来调用;其实在底层,对象调用类成员,类名调用也会被转换)
Static关键字不能和this,super同时使用!
5、匿名对象
一个没有名字的对象,创建了一个对象,没有赋给变量;
特点:
当方法或字段只被调用一次时;
可以作为实参传递;
在堆中只打开存储区,
只能使用一次, 使用完就被销毁了;
什么时候用?只使用一次!
新人();表示匿名对象,即没有名称的对象。
新人()。年龄=17;//用了一次就毁了
6、this关键字
特征:这表示当前对象。
当前对象当前调用实例成员的对象。
换句话说,调用该方法的人就是当前对象。
什么时候使用这个关键字?
方法之间互相调用;
这个。场;
在构造函数中互相调用,但是这个([参数])必须写在构造函数的第一行。
这不能在静态修饰的方法或静态修饰的代码块中使用;
构造方法中的this.name=name7、面向对象之封装
封装的两层含义:
1.把对象的状态和行为作为一个统一的整体,存储在一个独立的模块(类)中;
2.‘信息隐藏’,隐藏不需要外界知道的信息,尽可能隐藏对象函数的细节和字段;
封装机制在程序中的体现如下:
用字段描述对象的状态,用方法描述对象的行为,将字段和方法定义在一个类中,保证外界不能随意更改其内部字段值,也不允许随意调动其内部函数方法。
程序的一个实施例:
一般来说,类中的成员变量是私有的,可以通过提供外部方法(setXxx,getXxx)来访问变量(xxx)。
boolean 类型的变量没有getXX,只有 isXX;
例如:
类别人员1{
私有字符串名称;
私人年龄;
私有int sal
公共字符串getName() {
返回名称;
}
public void setName(字符串名){
this.name=name
}
public int getAge() {
回归年龄;
}
公共无效存储(整数){
this.age=年龄;
}
}8、访问修饰符
私有访问权限:该类可以内部访问,但不能从子类继承;
默认不写任何东西,包访问权限:这个类可以内部访问,同一个包中的其他类也可以访问,同一个包可以继承;
受保护的子类访问权限:这个类可以内部访问,不同包的子类也可以访问,同一包的其他类也可以访问,可以从子类继承;
公共访问权:可以在任何地方访问,可以从子类继承;
总结:
如何解决写爬虫IP受阻的问题?立即使用。
9、类的设计分析
分析思路:
根据需要写出类中包含的字段;
所有领域都必须私有化;
封装的字段可以通过设置setter和getter的值和value来获得;
可根据需要增加多种施工方法;
根据需要,可以增加相应的方法;
类中的所有方法都不应该直接处理(输出打印),而应该留给调用者处理。
10、面向对象之继承
先有反映一般事物特征的类,再在此基础上有反映特殊事物的类;
也就是说,继承是一种从一般到特殊的关系;
特点:
1、提高了代码的可重用性。
2.让班级之间有关系。只有有了这种继承关系,才能有多态的特征。
3.Java语言只支持单一继承(不同于C语言)。
因为多重继承容易带来安全隐患(如果父类较多,功能相同,会不会出现调用不确定性?如果你覆盖了一个方法,它是谁的?)。
ps:接口可以实现多继承
4.Java支持多层继承,object是每个类的超类,实现了树形结构。
我的总结:
是继承多态性的前提。
对于类,只支持单一继承。
格式:
[修饰符]类子类扩展超类
根据这种关系,我们称超类为父类或基类,子类为子类或派生类或扩展类;
我的总结:
对象是所有类的父类,
对象是直接父级或间接父级。
例如:
学生属于人类的一种特殊情况。这个时候我把人类的共性写在人类里。为了让学生有这些共性(比如其他老师也可以有这些共性),那么我要求学生扩展Person类。
我的总结:
子类和父类之间的关系:
子类扩展了父类(子类是父类的特例)
主要是基于父类,然后添加自己的字段和方法。
父类的私有成员子类不能从继承;
不能继承父类的构造函数;
Java只支持单一继承,不支持多重继承;//否则,例如,show方法会继承多个。我不知道该打给哪一个。
一个类只有一个直接父类;
当一个未显示的类继承另一个类时,默认的直接父类是Object类;
Student的直接父类是Person,object类也是Student类的父类,但它是间接父类;
一旦一个类显示继承了另一个类,默认的直接父类对象就会被取消。
Java中的一个类只能有一个直接父类;
Java.lang.Object是所有类的父类,Object要么是直接父类,要么是间接父类。
对象实例化过程
在继承操作中,对于子类对象的实例化:
在实例化一个对象之前,子类必须首先调用父类中的构造函数,然后调用自己的构造函数。
以上是本文的一部分,后续会继续为大家整理面向对象的知识。请指出错误的地方,谢谢!
更多问题请访问PHP中文网:JAVA视频教程。以上是java——面向对象详细介绍(一)的详细内容。更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。