主要内容:1、对象与类 2、对象与重载 3、代码块 4、全局变量与局部变量 5、构造方法 6、对象初始化过程
先说现实生活中的对象:
现实生活中万物皆是对象:灯泡质检员质检的每个灯泡;对于老师而言,在听课的各位学生;对于大家而言,自己的笔记本电脑。
java语言中的对象:
java语言中的对象是对现实世界中对象的模拟,现实中的对象存在于现实生活中,JAVA语言中的对象存在于计算机中。
java语言中的对象又称为实例。
对象的属性和方法:
全面认识现实生活中的对象就要知道它有哪些信息,它能干什么(即功能)?
java语言中的对象也是如此,只是叫法不同,java中将现实对象中的信息称为属性(也叫全局变量),将现实对象的功能称为方法。
例: 学生李四属性:学号、姓名、班级; 学生李四方法:看书、做作业、问问题。
写出一辆兰博基尼的属性和方法。
java中的“类”:
java语言把一组对象的相同属性和方法抽象到一个java源文件就形成了类。
如何定义一个类:
定义一个类的步骤:1、定义类名;2、定义类的属性3、定义类的方法。
类名的命名规则:
1、符合标识符命名规范
2、类名必须使用英文字母,首字母应该大写,如Hello、People等
3、当“类名”由多个单词组成时,每个单词的首字母都要大写。如:Time、Game、DateUtil等。
public class 类名{
//属性
属性1类型 属性1;
属性2类型 属性2;
属性3类型 属性3;
。。。。。。。。
//方法
方法1;
方法2;
方法3;
。。。。。。。
}
如何定义类:
public class Student{
//定义属性
String id;//学号
String name;//学生姓名
String grade;//学生年级
//定义读书方法
public void readBook(){
System.out.println(name+"正在读书。。。");
}
//定义正在写作业的方法
public void doHomework(){
System.out.println(this.name+"正在写作业。。。")
}
}
对象的创建和使用:
通过new关键字创建对象。创建对象又称实例化对象。
Student student=new Student();
使用 '.' 运算符访问对象的属性和方法。
student.属性=值;
student.方法名();
public class Student{
public static void main(String[]args){
Student stu=new Student();
stu.id="10043846";
stu.name="张芳";
stu.grade="三年级";
stu.readBook();//调用学生读书的方法
stu.doHomework();//调用写作业的方法
}
}
类与对象:
1、类是创建对象的模板,确定对象将会拥有的属性和方法。
2、类是对象的抽象化,对象是类的具体化。
3、类是一种数据类型,是对象的数据类型(不同于int等基本类型:类具有方法)
面向对象与面向过程:
1、面向对象是一种编程思想,这种编程思想凸显对象在编程过程中的重要作用。什么是面向对象呢?简单的说就是让对象成为类与类之间通信的桥梁,通过对象使类之间形成有机的整体。
2、面向对象编程语言以对象为中心,以消息为驱动,即程序=对象+消息;
注解: 消息指方法的调用:java使用向方法传递参数的方式向方法发送消息;并通过返回值从方法中获取信息。
面向过程编程语言则以过程为中心,以算法为驱动,即程序=算法+数据。
方法与重载:
如何定义方法:
方法用于定义类的某种行为(或功能),其语法结构如下:
访问控制符 [修饰符] 返回值类型 方法名([参数]){
//方法体
}
public void sayHello(){
System.out.println("hello");
}
protected final void show(int x){
System.out.println(x);
}
private static int add(int x,int y){
return x+y;
}
访问控制符:方法中的访问控制符用于限制方法在其他类中的适用范围。
访问控制符分为四种:public protected 友好的和private。
修饰符:
static修饰符用于限制方法的调用方式;
1、static修饰的方法可以直接使用类名调用也可以使用类创建的对象调用。
2、非static修饰的方法只能使用类创建的对象调用。
3、其他常用的修饰符有final和synchronized
返回值类型:如果方法没有返回,需要用void表示。
void sayHello(){
System.out.println("hello");
}
方法返回基本数据类型的数据,则返回值的类型必须是返回值所需的数据类型或者精度更高的数据类型(针对于数值型数据)
boolean compare(int x,int y){
return x>y;
}
int add(int x,int y){
return x+y;
}
double subtraction(int x,int y){
return x-y;
}
返回值类型:
方法返回引用数据类型的数据,则返回值类型必须是返回数据类型所需的数据类型或者其父类。
public class Student{
public Object getInfo(String name,String address){
return name+"-"+address;
}
public static void main(String[]args){
Student student=new Student();
Object object=student.getInfo("张三","中国河南");
System.out.println(object);
}
}
方法如果有返回值,则必须借助return关键字将数据返回。
方法名:
遵循标识符命名规则;首字母必须小写,如果由多个单词组成,则从第二个单词开始首字母必须大写;方法名一般由一个动词或者动名词构成。
参数:
1、方法可以有多个参数,各个参数之间用(,)隔开。
2、方法的参数在整个方法内有效。
3、方法参数前面的数据类型用于限制方法调用时所传输数据的数据类型。
动态参数:
public class Test {
public static void print(int...numbers){
for(int number:numbers){
System.out.println(number);
}
}
public static void main(String[]args){
print(1,2,3,4);
}
}
注意:
1、动态参数实质为数组;
2、动态参数必须位于参数列表的最后;
3、一个方法只能有一个动态参数;
方法递归:
方法递归是指一个方法在它的方法体内调用它自身。
public class Test{
static long factorial(int n){
if(n==1){//先判断条件,一旦满足就不在递归,逐层返回
return 1;
}
}else{
return n*factorial(n-1);
}
public static void main(String []args){
System.out.println(factorial(5));
}
}
注意:
1、在递归调用中,主调方法同时也是被调方法
2、递归的关键是要有结束递归的时机