实际上是一个面向操作过程,首先设计一系列过程(算法)来求解问题(操作数据),然后再考虑存储数据的方式(组织数据)。即程序=算法\+数据结构。对应典型的计算机语言是c。
性能比面向对象高,调用速度快,比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发
没有面向对象易维护、易复用、易扩展
和面向过程的次序相反,首先要确定如何组织数据,然后再考虑如何操作数据的算法。面向对象的程序是由对象组成,每个对象包含对用户公开的特定功能部分和隐藏的实现部分。用户不必关心对象的具体实现,只需要对象能够满足用户的需求即可。即程序=对象\+消息。
易维护、易复用、易扩展
性能比面向过程低
是同一种对象的集合与抽象,是一组相关的属性和行为的集合。类中成员变量是事物(同一种对象集合)的属性,成员方法是事物的行为。定义类实际上就是定义类的成员(成员变量和成员方法)。变量描述的是事物的属性,方法描述的是事物的行为。
又叫做对象变量,成员变量。当通过类生成对象的时候才分配存储空间,再通过对象的引用来访问实例变量。各个对象之间的实例变量互不干扰。有默认初始值,存在于对象所在的堆内存中。
又叫静态变量,是一种用static关键字修饰的特殊成员变量。在类加载的时候就分配存储空间。 所有由这个类生成的对象都共用这个类变量。一个对象修改了变量,则所有对象中的这个变量的值都会发生改变。
方法中或某局部块中声明定义的变量或方法的参数,只存在与创建他们的代码块中(\{ \})。如函数内,语句内。
每个实例方法都有一个返回值类型,一个签名(指定方法名)
每个Java类至少含有一个构造方法以创建一个对象的标识,构造方法的作用是初始化实例变量。
格式:
方法名和类名一样
没有返回值类型
没有具体的返回值
student(){}
注意事项:
构造方法可以重载(overload),但是不能被重写(overwriter)。
若未在类中写构造方法,系统会提供一个默认的无参构造方法,如果写了,系统将不会提供(建议自己写个无参的构造方法)
构造方法不能递归调用
给成员变量赋值的方式:
无参构造方法+set、get方法
带参构造方法
class Student{
private String name;
private int age;
public Student(){}
public Student(String name, int age){
this.name = name;
this.age = age;
}
public void getName(){
return name;
}
public String setName(String name){
this.name = name;
}
public int getAge(int age){
this.age = age;
}
public void getAge(){
return age;
}
}
class StudentDemo {
public static void main(String[] args) {
//创建对象,调用setter方法赋值
Student s = new Student();
s.setName("Ethan");
s.setAge(16);
//调用有参构造方法创建对象
Student s = new Student("Ethan", 16);
}
}
对象(object)是类的一个具体的实例。由类构造(construct)对象的过程叫做创建类的实例(instance)。
Student s = new Student(); //对象初始化
关于形参和实参,这篇文章讲的不错
https://yq.aliyun.com/articles/642055#
封装
继承
多态
作用:隐藏了具体实现细节,并且提供了公共的访问方式
优点:
提高代码的复用性
提高代码的安全性
设计原则:将不想外界知道的细节隐藏。private是封装的一种体现,类、方法、访问修饰符都是封装的一种技术。
原文:https://www.cnblogs.com/EthanWong/p/12667055.html