1. 什么是面向对象编程
面向对象编程(object Oriented programming —OOP)
把构成问题的各种事物,抽象成各个对象,这些对象具有解决问题的行为(方法),同时对象还可以具有解决很多类似问题的行为(方法)而不只是解决一个问题。
补充:关于面向过程编程
面向过程编程(procedure oriented programming—POP)
分析出解决问题的步骤,用函数将步骤一步一步实现,然后以此调用。
为什么使用面向对象?
面向对象是现实事物的体现。
现实世界客观存在的事物都可以看做对象,对象是有形的,如汽车、人,也可以是无形的,如一项计划,因此对象无处不在。我们知道现实的事物都有自己的属性和行为。例如,人具有自己的厲性:职业、长相、性别等,他们还有一些行为:吃饭、睡觉、工作学习等。那么各个事物之间
还会发生各种各样的联系,如顾客去超市购物,购物完毕要去收银台,收银员要去结账等一系列的关联事件。
2. 什么是—类
类是构成对象的模板,是一组相关属性和行为的集合,是对某一种具体事物的抽象描述,也可以看成是用户自定义的一种数据类型。
简单来说,类是对现实生活中一类具有共同属性和行为的事物的抽象。
创建类
public class dog{ //创建类
String name;//类的属性
}
3. 什么是—对象
对象是按照类这个模板来创建的。对象是一类事物的实例,是具体的,对象是类的实体。
public class dog{
string name="大黄";//属性
public static void main(String[]args){
dog d1 = new dog();//创建对象
public void print(){
System.out.println("英雄的介绍:\n我的昵称叫"+this.name);
}
}
5. 方法
方法定义在类中,属于类的成员,所以也可以叫做成员方法。
上图 print()就是成员方法
this关键字
this 通常指当前对象的引用,它可以调用当前对象的成员。例如:
this.name;//调用当前对象的属性(名字nmae);
this.print();//调用当前对象的方法
6. 类与对象的关系
- 类是对一类事物的描述,是抽象的。
- 对象是一类事物的实例,是具体的。
- 类是对象的模板,对象是类的实体。
可以这样理解他们的关系
类就是我们创建的 狗这个类,狗类;
对象就是我们创建的d1 可以理解为第一条狗;
7. 参数传递
形参 :一般定义在方法中,如
public void test(int a){}
实参:实际上的参数,有实际的值,如
public class Test{
public void test(int a){ //这里的变量a表示的是形参,没有实际的值
}
public static void main(String[] args){
Test t = new Test();
t.test(1); //调用方法时传入了实参,数值为1
int x = 10;
t.test(x); //调用test方法时传入了实参x,数值为10
}
}
8.构造方法及其重载
构造方法是类的一种特殊方法,用来初始化类的一个新的对象,在创建对象(new 运算符)之后自动调用。Java 中的每个类都有一个默认的构造方法,并且可以有一个以上的构造方法。
Java 构造方法有以下特点:
方法名必须与类名相同
可以有 0 个、1 个或多个参数
没有任何返回值,包括 void默认返回类型就是对象类型本身
只能与 new 运算符结合使用
值得注意的是,如果为构造方法定义了返回值类型或使用 void 声明构造方法没有返回值,编译时不会出错,但 Java 会把这个所谓的构造方法当成普通方法来处理。
这时候大家可能会产生疑问,构造方法不是没有返回值吗?为什么不能用 void 声明呢?
简单的说,这是 Java 的语法规定。实际上,类的构造方法是有返回值的,当使用 new 关键字来调用构造方法时,构造方法返回该类的实例,可以把这个类的实例当成构造器的返回值,因此构造器的返回值类型总是当前类,无须定义返回值类型。但必须注意不要在构造方法里使用 return 来返回当前类的对象,因为构造方法的返回值是隐式的。
注意:构造方法不能被 static、final、synchronized、abstract 和 native(类似于 abstract)修饰。构造方法用于初始化一个新对象,所以用 static 修饰没有意义。构造方法不能被子类继承,所以用 final 和 abstract 修饰没有意义。
构造方法如下
public class Hero1{
public Hero1(){
name = '三梦奇缘';
loyalty = 20;
sex ='男';
System.out.println("执行构造方法");
}
}
OOP特征分别是封装、继承、多态:
封装:封装是指将对象信息状态通过访问权限修饰符隐藏在对象内部,不允许外部程序直接访问,如果外部程序要访问对象内部,可以调用内部提供的get或set方法。
继承:子类继承了父类所有的成员方法和属性,并且可以拥有自己特性。继承解决了代码的重用问题
多态:父类或接口定义的引用变量可以指向子类或具体实现类的实例对象。提高了程序的拓展性。
五大基本原则:
单一职责原则SRP(Single Responsibility Principle) 类的功能要单一,不能包罗万象,跟杂货铺似的。
开放封闭原则OCP(Open-Close Principle)一个模块对于拓展是开放的,对于修改是封闭的,想要增加功能热烈欢迎,想要修改,哼,一万个不乐意。
里式替换原则LSP(the Liskov Substitution Principle LSP)子类可以替换父类出现在父类能够出现的任何地方。比如你能代表你爸去你姥姥家干活。哈哈~~
依赖倒置原则DIP(the Dependency Inversion Principle DIP)
高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。抽象不应该依赖于具体实现,具体实现应该依赖于抽象。就是你出国要说你是中国人,而不能说你是哪个村子的。比如说中国人是抽象的,下面有具体的xx省,xx市,xx县。你要依赖的是抽象的中国人,而不是你是xx村的。
接口分离原则ISP(the Interface Segregation Principle ISP)
设计时采用多个与特定客户类有关的接口比采用一个通用的接口要好。就比如一个手机拥有打电话,看视频,玩游戏等功能,把这几个功能拆分成不同的接口,比在一个接口里要好的多。
方法重写:
参数列表必须完全与被重写的方法相同
返回的类型必须一直与被重写的方法的返回类型相同
访问修饰符的限制一定要大于被重写方法的访问修饰符
重写方法一定不能抛出新的检查异常或者比被重写方法更加宽泛的检查型异常
存在于父类和子类之间,方法被定义为final不能被重写。
方法重载:多个同名函数同时存在,具有不同的参数个数/类型,返回值类型可以相同可以不同,调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性,存在于父类和子类、同类中.
再然后就是优缺点:
优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护
缺点:性能比面向过程低
本文详细阐述了面向对象编程(OOP)的基础概念,包括类的定义、对象的创建、方法的运用,以及类与对象的关系。还介绍了面向对象编程的优点、OOP特征(封装、继承、多态)和五大基本原则。同时讨论了构造方法、重载、参数传递以及面向对象与面向过程的区别。
2337

被折叠的 条评论
为什么被折叠?



