Java面向对象1
-
面向过程和面向对象的设计思想
面向过程:pop
分析出解决问题所需的步骤,然后把步骤一步步实现.
例如:往冰箱装大象问题.分成三步
1.打开冰箱
2.装入大象
3.关上冰箱
面向对象:oop面向对象的编程语言
以分类的方法进行思考和解决问题,面向对象的思维方式适合于处理复杂的问题.面向对象的思想符合人类的认知习惯.
例如:往冰箱装大象问题
先设计两个类
1.冰箱类(包含门类)
门类(包含两个方法,开门和关门)
2.人类(包含操作方法)
3.大象类(进入冰箱的功能)
三个类之间相互调用彼此的功能共同处理问题
面向过程适合处理简单的事情,直接关注流程,简单有效.面向对象适合处理复杂的事情,先使用面向对象的方式对整体关系作出分类,然后,根据不同的类深入细节的处理.
面向对象无法取代面向过程,他们是相辅相成的.面向对象关注于从宏观上把握事物之间的关系,在具体到如何实现某个细节时,任然采用面向过程的思维方式.面向对象如果离开了面向过程,就无法实现真正的落地,成为无源之水.
-
Java类
类是一个模板,它描述一类对象的属性和行为.
类是表示一个客观世界某类群体的一些基本特征抽象.
类 = 汽车设计图=.java文件; 对象 = 实实在在的汽车;
类的结构
成员变量:对象属性的描述;
方法:对象的行为;(可以做的事情)
构造方法:用于创建对象;
内部类:即在类体中声明的类.
块:代码块
第一步:发现类
类的声明格式为:[访问权限修饰符] [修饰符] class Car{}
访问修饰符有两种public和default
修饰符:final和abstract
关键字class用来定义一个类
Java类名的命名规范:类名首字母大写,见名知意,驼峰表示.
第二步:发现类的共有属性(成员变量)
public static class Car{//类声明 String name;//成员变量定义 String color = "blue"; int price; /**声明成员变量的格式为: *[访问权限修饰符] [修饰符] type attr_name [=defaultVaule]; */ public static void start(){//方法声明 System.out.println("汽车启动"); } public static void stop(){ System.out.println("汽车停止"); } }
第三步:发现类的方法
public class Car{ //成员变量定义 String name; //名称 String color; // 颜色 float price;//价格 /*方法声明格式为: [访问权限修饰符] [修饰符]/ void start(){ System.out.println("汽车启动"); [return 返回值;] */ } }
-
Java对象
对象:对象是类的一个实例,是以类为模板在内存中创建的实实在在存在的实例.
在内存中存储.
对象的创建和使用
对象的创建和使用
public static void main(String[] args) { /* 创建汽车对象 以Car类为模板. Car c = new Car();new 关键词 +默认构造方法(); 在内存中为Car创建对象c ,c是实例化对象; Car c以Car类作为类型声明一个变量,指向内存空间中的具体的对象. 使用c变量访问对象中属性,方法 通过类可以创建无数个对象 * */ ClassDemo.Car c = new ClassDemo.Car(); c.start(); c.stop(); String b = c.color; System.out.println(b); c.name="宝马"; c.price=70000; }
public static class Car{//类声明 String name;//成员变量定义 String color = "blue"; int price; public static void start(){//方法声明 System.out.println("汽车启动"); } public static void stop(){ System.out.println("汽车停止"); } }
使用 new 关键字创建对象。
使用对象(引用) . 成员变量来引用对象的成员变量。
使用对象(引用) . 方法来调用对象的方法。
同一类的每个对象有不同的成员变量存储空间。
同一类的每个对象共享该类的方法。
-
类和对象
类是一类事务的抽象概念,是一个模型.
对象是由这个模型所创造的一个个的具体存在的,是实实在在存在的实例.
所以创建对象的过程也叫实例化对象.
现实生活中先有对象后有类,而编程时先设计类后创建对象
-
变量分类
一个类可以包含以下类型变量:
成员变量:
成员变量是定义在类中,方法体之外的变量.
成员变量可以使用java语言中任何一种数据类型(包括基本类型和引用类型).
成员变量在创建对象的时候会从类中复制一份到对象中.
成员变量可以被类中方法、构造方法和特定类的语句块访问.
成员变量的作业范围为整个类体.
局部变量:
在方法,构造方法或者语句块中定义的变量被称为局部变量.
局部变量可以使用Java语言中任何一种数据类型(包括基本类型和引用类型).
局部变量在使用前必须初始化赋值.
变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁.
类变量:(也叫静态变量)类变量也声明在类中,方法体外,但必须声明为static类型.
-
方法
一个类可以包含以下类型方法:
**成员方法:**成员方法是定义在类中.这种方法在创建对象的时候创建.
语法格式:
修饰符 返回值类型/void 方法名(参数列表){
方法体语句:
[return 返回值]
}
**构造方法:**用来创建对象的方法.
类方法:(也叫静态方法)类方法也声明在类中,但必须声明为static类型.
public static class Car{//类声明 String name;//成员变量定义 String color = "blue"; static int price ;//类变量 public void stop(){//方法声明 成员方法 } public static void start(){//方法声明 ,类方法 int a= 0;//局部变量,必须赋值 } public Car(){//构造方法 System.out.println("构造方法1"); }
构造方法
构造方法是定义在Java类中的一个用来创建对象的方法.
构造方法名与类名相同,且没有返回值,且不需要使用void修饰.
使用 new + 构造方法创建一个新的对象.在创建一个对象的时候,至少要调用一个构造方法.
一个类可以有多个构造方法.
每个类都有构造方法.如果没有显式的为类定构造方法,java编译器将会为该类提供一个默认构造方法,但是只要在一个Java类中定义了一个构造方法后,默认的无参构造方法即失效.
方法的重载
方法的重载是指一个类中可以定义有相同的名字,但参数不同的多个方法.
调用时,会根据不同的参数表选择对应的方法.
方法重载
1.同一个类中
2.方法名相同
3.参数不同(数量不同,类型不同,顺序不同)
注意:方法重载跟方法的返回值类型,访问权限没有任何关系.
例如:
public static class Car{//类声明 String name;//成员变量定义 String color = "blue"; public Car(){ System.out.println("构造方法1"); } public Car(int a){ System.out.println("构造方法2"); } public Car(int a , String b){ System.out.println("构造方法3"); } }