面向对象更增强调运用人类在平常的是为逻辑中采用的思想方法与原则java
抽象、分类、继承、聚合、多态数据库
面向过程:强调的是功能行为 面向过程:将功能封装进对象,强调具有了功能的对象
**封装、继承、多态**
类 :对现实世界事物的抽象定义apache
对象:类的实体(实例)数组
 `ps. 类就像汽车设计图 对象就像实际的汽车` 类(class)和对象(object)是面向对象的核心概念。类是对现实世界事物的描述,类是抽象、概念上的定义。 面向对象的开发方式:
定义类实际上是定义类中的成员(成员变量、成员方法)oracle
public class Teacher{ String name; int age; String gende; public void teach(){ System.out.println("老师上课"); } public void eat(){ System.out.println("老师吃饭"); } public void introduce(){ System.out.println("姓名:"+name+“年龄”) System.out.println("年龄:"+age); } }
描述事物的特征oop
属性用来描述事物的特征,用属性变量来保存数据,属性也叫作成员变量,分为两类:
类属性(类变量):类中的静态属性测试
类中定义的成员变量。this
示例: public class Student{ public int source; private String name; private int age; private char sex; //成员变量、对象属性、类属性 ... }
方法也叫作成员方法,分为两类:
类方法:隶属于类,经过该类便可访问设计
类中定义的方法。指针
示例: public class Teacher{ String name; int age; String gende; //如下为类中定义的方法 public void teach(){ System.out.println("老师上课"); } public void eat(){ System.out.println("老师吃饭"); } public void introduce(){ System.out.println("姓名:"+name+“年龄”) System.out.println("年龄:"+age); } }
经过对象访问属性和方法,使用对象加`.`的方式。
经过new关键字能够将一个类进行实例化,实例化即建立某个类的对象,类的实例便是一个对象。
// Techer类型 对象的引用 new关键字 构造方法 Teacher teacher = new Teacher();
经过对象加上`.`的方式访问对象的方法或属性`非private属性`
示例: public class TeacherTest{ public static void main(String[] args){ //建立对象teacher Teacher teacher = new Teacher(); //给teacher对象的属性赋值 teacher.name = "王欢"; teacher。age = "24"; //调用teacher对象的 teach() 方法 teacher.teach(); } }
建立文件MyDate.java
public class MyDate{ int year; int month; int day; public String getMyDate(){ return year+"年"+month+“月”+day+"日"; } }
建立测试类 MyDateTest.java
public class MyDateTest{ public static void main(String[] args){ MyDate myBirthDay = new MyDate(); myBirthDay.year = 1995; myBirthDay.month = 8; myBirthDay.day = 17; MyDate today = new MyDate(); today.year = 2019; today.month = 4; today.day = 16; System.out.println("生日:"+myBirthday.getMyDate()); System.out.println("今天:"+today.getMyDate()); } }
将类的成员变量私有化,使用get、set方法读取和设置成员变量的值,体现了类的封装性,保护数据。
//示例:getter、setter方法 public class Dog{ private String color; private String name; private int age; public void cry(){ System.out.println("狗狗叫呢!"); } public String eat(String something){ return "狗吃了"+something; } public void say(){ System.out.println("狗会说话了?"); } public String getColor() { return color; } public void setColor(String color) { this.color = color; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { if(age<20&&age>0) this.age = age; else return; } }
实例化对象后直接使用,没有使用对应的引用变量进行接收。适用于对象实例化只须要进行一次调用的请状况下,调用完成对象将由GC垃圾回收进行处理。 `new Teacher().eat();`
建立对象 初始化对象
对象的构造器用于建立对象,在建立对象时完成对象的初始化工做。构造器(构造方法)在建立对象时由JVM执行。
static、final、synchronized、abstract、native
修饰return
语句返回值public class Dog{ private String color; private String name; private int age; public Dog(){}//无参构造器 //当类中未编写构造器时默认有一个 无参构造器 //当编写了有参构造器时,默认没有 无参构造器 按需自行编写它 //带参数构造 public Dog(String color, String name, int age){ this.color = color; this.name = name; this.age = age; } //构造器也是类方法 能够重载 public Dog(String color,String name){ this.color = color; ths.name = name; } ... }
public class Dog{ private String color; private String name; private int age; public Dog(){ this("白色","小白"); //必须放在首行! } //无参构造器 //当类中未编写构造器时默认有一个 无参构造器 //当编写了有参构造器时,默认没有 无参构造器 按需自行编写它 //带参数构造 public Dog(String color, String name, int age){ this.color = color; this.name = name; this.age = age; } //构造器也是类方法 能够重载 public Dog(String color,String name){ this.color = color; ths.name = name; } ... }
`ps. 通常类中保留两个构造器,一个无参构造器和一个全参数构造器。` 
JavaBean是一个普通的Java类
JavaBean是一种Java语言写成的可重用组件。用户可使用JavaBean将功能、处理、值、数据库访问和其余人户能够用java代码创造的对象进行打包,并由其余开发者在其余功能中使用这些对象。 JavaBean提供了一种随时随地的复制和粘贴的功能,不用关心任何改变。 JavaBean标准
示例: //Computer.java public class Computer { private double cpu; private int memory; public Computer() { } public double getCpu() { return cpu; } public void setCpu(double cpu) { this.cpu = cpu; } public int getMemory() { return memory; } public void setMemory(int memory) { this.memory = memory; } }
package语句规范类的整理 解决类名冲突问题
package语句应放在java源文件的第一行。
//package 包名.子包名.子子包名.子子子包名 // 组织.机构名称.项目名称.模块名称 // org、com、edu package org.apache.oracle.JdbcDriver
package关键字使用后编译java文件时命令须要使用java -d . *.java
其余类中使用须要使用类全限定名称org.apache.orcle.JdbcDriver
import语句告诉编译器到哪里去寻找类
为使用定义在不一样包中的Java类,需用·`import`语句来引入指定包层次下所须要的类或所有类。
//import 包名.子包名.子子包名.子子子包包.类名(或 [表示所有]) import org.apache.oracle.JdbcDriver; import org.apache.oracle.*;
数组是一组相同类型的数据的集合,数组是对象。元素是数组中的一个数据,任意类型的数据均可以建立数组。
示例: int[] intArray; //声明了一个int数组 intArray = new int[5]; //建立数组:使用new关键字 中括号内数字表示元素个数 //数组一旦建立长度和数据类型将没法再被修改 intArray[0] = 11; intArray[1] = 22; intArray[2] = 33; intArray[3] = 44; intArray[4] = 55; //如下语句编译无报错但运行时会报错IndexOoutOfBoundsException //intArray[5] = 666;
`ps.数组在内存中时是连续 数组长度过大可能会建立失败`
示例: int[] intArrays = new int[5]; //循环赋值 for(int i=0; i<5; i++){ intArrays[i] = i; } //循环遍历 for(int i=0; i<intArrays.length; i++){ //intArrays.length是数组的长度 length是常量不可修改 System.out.println(intArrays[i]); } //加强for循环遍历 // 局部变量 待遍历数组 for(int intArray:intArrays){ System.out.println(intArray); }
示例: //动态初始化 int[] intArrays = new int[3]; intArrays[0] = 1; intArrays[1] = 11; intArrays[2] = 111; //静态初始化 int[] intArrays = new int[]{1,11,111}; int[] intArrays; intArrays = new int[]{1,11,111}; int[] intArrays = {1,11,111}; //int[] intArrays; //编译报错intArrays = {1,11,111}; × //如下写法编译报错 //int[] intArrays = new int[6]{1,11,111}; ×
示例: Cat[] cats = new Cat[3]; cats[0] = new cat("灰灰"); //cats[1] = new Cat("靓靓"); cats[2] = new Cat("花花"); for(Cat cat:cats){ cat.say(); } //cats[2] 未实例化运行时报错空指针异常 //NullPointerException