目录
面向过程:主要关注点是实现的具体过程,因果关系【集成显卡的开发思路】
面向对象:主要关注点是主要关注对象【独立体】能完成哪些功能。【独立显卡的开发思路】
1.属性私有化,使用private关键字进行修饰,private表示私有的,修饰的所有数据只能在本类中访问
2.对外提供简单的操作入口,也就是说以后外部程序要想访问age属性,必须通过这些简单的入口进行访问
面向过程:主要关注点是实现的具体过程,因果关系【集成显卡的开发思路】
优点:对于业务逻辑比较简单的程序,可以达到快速开发,前期投入成本较低。
缺点:采用面向过程的方式开发很难解决非常复杂的业务逻辑,
面向过程的方式导致软件元素之间的"耦合度"非常高,只要其中一环出问题,整个系统受到影响,导致最终的软件扩展力差另由于没有独立体的概念,所以无法达到组件复用性的功能
面向对象:主要关注点是主要关注对象【独立体】能完成哪些功能。【独立显卡的开发思路】
优点:耦合度低,扩展力强,更容易解决现实世界当中更复杂的业务逻辑,组件复用性强
缺点:前期投入成本较高,需要进行独立体的抽取,大量的系统分析与设计
C语言是纯面向过程的,C++半面向对象,JAVA纯面向对象
目前一些新的编程语言大多数是面向对象的,人认识现实世界是以面向对象的方式,面向对象更符合人的思维方式
面向对象的三大特征:
所有面向对象的编程语言都有这三大特征
封装
继承
多态
面向对象的方式开发软件,生命周期当中有三个阶段:(整个生命周期中贯穿使用OO面向对象方式)
面向对象的分析:OOA
面向对象的设计:OOD
面向对象的编程:OOP
类与对象的关系
类--【实例化】-->对象 对象又被称为实例instance
对象--【抽象化】-->类
对象的创建和使用:
通过一个类可以实例化多个对象
实例化对象的语法: new 类名();
new运算符的作用是创建对象,在JVM堆内存中开辟新的内存空间
内存空间解释:
方法区内存:
在类加载的时候,class字节码代码片段被加载到该内存空间当中
栈内存(局部变量):
方法代码片段执行的时候,会给该方法分配内存空间,在栈内存中 的压栈
堆内存:
new的对象在堆内存中存储
创建一个Student的类:
实例化Student类------使之成为一个Student对象:Student s= new Student()
student是一个自定义的引用数据类型
s是一个变量名,局部变量,在栈内存中存储
new Student()是一个学生对象
对象:new运算符在堆内存中开辟的内存空间称为对象
引用:引用是一个变量,只不过这个变量中保存了另一个JAVA对象的内存地址
JAVA语言当中,程序员不能直接操作堆内存,JAVA中没有指针,与C语言不同
JAVA语言当中,程序员只能通过引用去访问堆内存当中对象内部的实例变量
访问实例变量的语法格式
读取数据:引用.变量名
修改数据:引用.变量名 = 值
面向对象封装性
封装的步骤:
1.属性私有化,使用private关键字进行修饰,private表示私有的,修饰的所有数据只能在本类中访问
//属性私有化private
private int age ;
2.对外提供简单的操作入口,也就是说以后外部程序要想访问age属性,必须通过这些简单的入口进行访问
对外提供两个公开的方法,分别是set和get
想修改属性,调用set方法
想读取属性,调用get方法
3.set方法的命名规范:
public void set 属性名(形参){ //属性名首字母大写
……
}
即: public void setAge(int a){
}
public void setAge(int a) { //set方法设置属性值
if(a<0 || a>100) {
System.out.println("输入年龄不合法");
return;
}
age = a;
}
4.get方法命名规范:
public int getAge(){ //获取age属性
return age;
}
一个属性的几种访问形式:
1.读取属性的值——get
2.修改属性的值——set
注意:
setter and getter方法没有static关键字
有static关键字修饰的方法怎么调用: 类名.方法名(实参);
没有static关键字修饰的方法怎么调用: 引用.方法名(实参);
关于java类中的构造方法:
1.构造方法又被成为构造函数/构造器/Constructor
2.构造方法语法结构:
[修饰符列表] 构造方法名(形式参数列表){
//构造方法体;
}
3.回顾普通方法的语法结构:
[修饰符列表] 返回值类型 方法名(形式参数列表){
//方法体;
}
4.对于构造方法来说,返回值类型不需要指定,并且也不能写void ,只要写上void,那么这个方法就成为普通方法了
5.对于构造方法来说,构造方法的方法名必须与类名保持一致
6.构造方法的作用:构造方法存在的意义是通过构造方法的调用,可以创建对象
7.构造方法应该怎么调用
(1)普通方法调用:
修饰符中有static时: 类名.方法名(实参列表)
修饰符中没有static时: 引用.方法名(实参列表)
(2)构造方法调用:
new 构造方法名(实参列表)
8.构造方法执行结束之后,有返回值吗
每一个构造方法实际上执行结束之后都有返回值,但是这个"return 值;"这样的语句不用写,构造方法结束的时候java程序自动返回值
并且返回值类型是构造方法所在类的类型。由于构造方法的返回值类型就是类本身,所以返回值类型不需要编写
public class User {
//属性——成员变量之实例变量
//用户编号
int no; //no是实例变量
//用户名
String name; //String是一种引用数据类型,代表字符串 name是实例变量 是引用
//家庭住址
Address addr; //Address是一种引用数据类型,代表家庭住址 addr是实例变量 是引用
//定义在类Address中
public User() {} //无参数构造方法
public User(int no,String name,Address addr) { //带参数构造方法
this.no = no;
this.name = name;
this.addr = addr;
}
}
//家庭住址类
public class Address {
//与User类中同理
String city;
String street;
String zipcode;
}