什么是程序?程序是为了模拟现实世界,解决现实问题而使用计算机语言编写的指令集合。
简单点说就是虚拟现实,使虚拟的网络世界更像真实的现实世界,或者说现实世界越来越网络化,虚拟化,最终的目标就是人网合一,无敌!233333。
c 语言是面向过程编程,java 是面向对象编程。更高级,更抽象化,更简单。
面向对象思想是一切客观存在的事物都是对象,万物皆对象。任何对象,一定具有自己的特征和行为。
在程序中,具化为类,属性,方法。做法就是定义类,定义类的属性和方法,实例化类,然后调用类的属性和方法,实现目的。
一个简单的“学生”类,定义属性和方法。
// 定义学生类:
public class Student {
// 属性
// 姓名
String name;
// 年龄
int age;
//性别
String sex;
// 分数
double score;
// 方法
public void sayHi() {
System.out.println("我叫"+ name + ",我"+ age + "岁,"+ sex + ",得了"+ score + "分。");
}
}
实例化“学生”类并调用方法。
public class Test {
public static void main(String[] args) {
Student stu1 = new Student();
stu1.name = "张1";
stu1.sex = "男";
stu1.age = 12;
stu1.score = 98.0;
// 我叫张1,我12岁,男,得了98.0分。
stu1.sayHi();
Student stu2 = new Student();
stu2.name = "张2";
stu2.sex = "女";
stu2.age = 22;
stu2.score = 100.0;
// 我叫张2,我22岁,女,得了100.0分。
stu2.sayHi();
}
}
类定义了对象应具有的特征和行为,类是对象的模板;对象是拥有多个特征和行为的实体,对象是类的实例。stu1、stu2 就是 Student 这个类的实例化对象,赋值、调用等操作的都是对象。
通过老师调动学生。
public class Teacher {
// 属性
// 姓名
String name;
// 年龄
int age;
// 性别
String sex;
// 部门
String deptment;
public void sayHi() {
System.out.println("我叫"+ name + ",我"+ age + "岁,"+ sex + ",在"+ deptment + "部门。");
}
// 调动学生属性和方法
public void sayHello(Student stu) {
System.out.println(name + "老师,对" + stu.name + "学生说: 你好。");
stu.sayHi();
}
}
public class Test {
public static void main(String[] args) {
Student stu1 = new Student();
stu1.name = "张1";
stu1.sex = "男";
stu1.age = 12;
stu1.score = 98.0;
stu1.sayHi();
Teacher teacher = new Teacher();
teacher.name = "李四";
teacher.sex = "女";
teacher.age = 42;
teacher.deptment = "教学";
// 我叫李四,我42岁,女,在教学部门。
teacher.sayHi();
// 李四老师,对张1学生说: 你好。
// 我叫张1,我12岁,男,得了98.0分。
teacher.sayHello(stu1);
}
}
实例变量(类属性)不赋值不会报错,可以直接访问。
Student stu1 = new Student();
// 我叫null,我0岁,null,得了0.0分。
stu1.sayHi();
在方法内部可以定义同属性名一样的局部变量,局部变量在实例变量后运行,所以会覆盖实例变量的值。
// 定义学生类:
public class Student {
// 属性
// 姓名
String name;
// 方法
public void sayHi() {
String name = "王五";
System.out.println("我叫"+ name + ",我"+ age + "岁,"+ sex + ",得了"+ score + "分。");
}
}
// name 输出一直是王五。
stu1.sayHi();
java 方法重载是在一个类中定义多个相同名称的方法。只改变方法的参数类型、个数或顺序,与访问修饰符、返回值类型无关。好处是灵活、方便、屏蔽使用差异。
// 计算器的方法重载
public class Calc {
public int add(int sum1, int sum2) {
return sum1 + sum2;
}
public int add(int sum1, int sum2, int sum3) {
return sum1 + sum2 + sum3;
}
public int add(int sum1, int sum2, int sum3, int sum4) {
return sum1 + sum2 + sum3 + sum4;
}
}
//调用
System.out.println(calc.add(1, 2));
System.out.println(calc.add(1, 2, 3));
System.out.println(calc.add(1, 2, 3, 4));
OC 里没有方法重载的概念。通过万能指针 id ,也叫泛型指针解决相同个数,不同类型参数传值的问题。