本节多为概念性笔记
目录
前言
从本次开始,进入到java的面向对象类型
一、面向对象和面向过程
面向过程和面向对象都是程序设计的一种风格(思想)
1.面向过程:
(procedure -Oriented Programming),简称POP
是以函数(一个一个的功能)为结构进行代码组织
解决问题时,分析实现所需的步骤,然后一步一步实现即可
代表语言:C语言
相对于面向对象语言,扩展能力差,后期维护难度较大
2.面向对象
是以类为单位进行组织,类:一类问题/分类 String,Math,Arrays,Scanner
public class 人类{
定义人有什么属性(变量)
人有什么功能(方法)
}
典型语言:c++,c#,Python,Java,Ruby
比如:
动物类{
动物共有属性和功能(代码复用)
}
猫 继承 动物{
定义自己特有的属性和功能(扩展自己的功能)
}
狗 继承 动物{
定义自己特有的属性和功能
}
是一种设计者思想,适合解决复杂的问题,扩展性,维护性更好
开着动作简单,面向过程的思想就可以解决
造车就比较复杂,适合使用面向对象思想,要分类
面向过程适合简单的问题
面向对象适合复杂的问题,先宏观的分类设计,具体某一个步骤落地时,又需要面向过程,他们是相辅相成的
二、类和对象
1.类
具有相同特征的事物的抽象描述(定义)
同一类事物的抽象描述(定义) 概念,模板
类中可以定义:
变量 属性 名词
方法 行为 动词
2.对象
对象:是类的一个实例,是以类为模板在内存中创建的实际存在的实例
该类事物具体存在的一个个个体,是真实存在的,也称为实例
万事万物(大千世界具体存在的对象)皆为对象.
人类-->一类群体 概念
张三-->具体的人 对象
电脑-->一类电脑
我的电脑-->可以使用的,具体,对象
编程是对现实生活事物的体现,根据现实事物进行(定义).
先设计类(定义某一类事物的功能)
三.构造方法
块 没有名字的一个代码块
内部类 在类的内部定义类(嵌套)
public class 修饰类 Car(类名)
类名:类名首字母大写
/*
定义属性 成员变量 直接在类{}中定义的内容,称为类的成员
*/
变量按位置分: 基本数据类型 引用数据类型 成员变量(在类中定义): Java中的变量使用前必须初始化 成员变量可以不对其初始化,系统会自动对其初始化
定义方法 成员方法 方法是类中具有的某种功能
例:
public class Car {
String name;
String color;
int price;
String model;
int[] a;
public void run(int speed) {
int a;
a = 10;
System.out.println(a);
System.out.println(name + "汽车以" + speed + "速度行驶");
}
public void run() {
System.out.println(name + "汽车行驶");
}
public void stop() {
System.out.println(name + "汽车停止");
}
public void piaoyi() {
System.out.println(name + "汽车漂移");
}
}
public class TestCar {
public static void main(String[] args) {
Car car = new Car();
car.name = "红旗";
car.color = "黑色";
car.model = "H4";
car.price = 5000000;
car.run();
car.stop();
car.piaoyi();
Car bccar = new Car();
bccar.name = "奔驰";
bccar.color = "红色";
bccar.price = 400000;
bccar.run();
bccar.stop();
bccar.piaoyi();
bccar.run(120);
}
}
其中:
Car car = new Car();
new Car(); new关键字用来创建对象,以Cae类为模板,在内存中开辟一块儿空间,用来存储对象中的信息
Car()构造方法,每个类中默认都有一个,方法名字与类名相同
Car(类型) car(变量名) 声明一个Car类型的变量
= 把右边的对象地址赋给左边的变量,用变量在后面的程序中表示内存中的对象
四、方法重载
定义:
在一个类中,有多个方法名相同,但参数个数不同的方法,称为方法重载 如何区分名称的多个方法: 通过参数个数,类型,顺序来进行区分 方法重载的意义:做同一件事,可以传入不同的参数 方法的重载跟方法的返回值类型没有任何关系
五、对象与引用
Car:类的构造方法,类中没有定义时,会默认有一个午餐的构造方法 构造方法的名字与类相同 定义:构造方法名字与类相同,且没有返回值,且不需要使用void修饰 特点: 类中没有定义时,会默认一个无参的构造方法,在无参构造方法中为成员变量赋初始值, 我们还可以定义有参的构造方法,通过有参的构造方法中为成员变量赋初始值 一旦类中定义了有参的构造方法,那么默认的无参构造方法便会失效 如果需要,需要显示的定义无参构造方法 作用: 用来为新创建的对象中的成员变量进行初始化
例:
public class Car {
String name;
String color;
int price;
public Car(){
System.out.println("无参构造方法");
name=null;
color=null;
price=0;
}
public Car(String c,int p,String n){
System.out.println("有3个参数的构造方法");
name=n;
color=c;
price=p;
}
public Car(String n,String c,int p){
System.out.println("有3个参数的构造方法");
name=n;
color=c;
price=p;
}
public void run(){
System.out.println(name+"汽车以"+60+"速度行驶");
}
public void run(int speed){
System.out.println(name+"汽车以"+speed+"速度行驶");
}
}
public class TestCar {
public static void main(String[] args) {
Car bmcar=new Car();
bmcar.name ="宝马";
bmcar.color="黑色";
bmcar.price=50000;
Car bccar=new Car("奔驰", "红色", 400000);
Car dzcar=new Car("白色", 200000,"大众" );
System.out.println(bccar.name+":"+bccar.price+":"+bccar.color);
System.out.println(dzcar.name+":"+dzcar.price+":"+dzcar.color);
}
}
总结
概念较多,容易混淆,辨别好面向对象和面向过程这两种思想的区别
清楚类和对象,熟练运用,可以根据要求进行类和对象的定义