1.编程思想概述
案例背景:从A城市坐车到B城市,方式有两种
面向过程思想c:自己开车去(需要知道路线,需要开车技术等等细节)
面向对象思想java:雇一个司机去(不必在意实现细节)
2.对象
1.概念:万物皆对象,现实生活中客观存在的事物都可以称为对象
2.属性:代表对象所拥有的属性 对象有什么
3.行为(方法):代表对象具有某种技能 对象能够做什么
3.类
1.概念:是具有相同特征的一类事物的抽象概括,是创建对象的模板
2.属性:成员变量
3.行为:成员方法
4.成员变量
1.位置:类的内部 方法的外部
2.作用域:至少在本类
3.语法:数据类型 变量名
4.特点:成员变量有默认值,默认值的类型和 数组元素中的默认值一致
整型: 0
浮点:0.0
字符:’\u0000’
布尔:false
注意:在定义类的同时可以直接给变量赋值(初始值)
案例:
import java.util.*;
public class Test{
public static void main(String[] args){
//创建对象
Student s = new Student();
//访问属性
System.out.println(s.name+"---"+s.age);
}
}
class Student{
//成员变量
String name = "小花";
int age = 18;
}
6.创建对象
1.语法:类名 对象名 = new 类名();
2.访问成员变量: 对象名.属性名
成员变量 | 局部变量 | |
---|---|---|
位置 | 类中方法外 | 方法中 |
作用范围 | 至少在本类 | 从定义位置到方法结束 |
默认值 | 有默认值 | 无默认值 |
重名 | 成员变量之间不可以重名 | 成员变量和局部变量之间是可以重名 |
7.成员方法
语法://将函数中的static去掉
修饰符 返回值类型 方法名(形参列表){ }
调用成员方法
语法:对象.方法名();
案例:
import java.util.*;
public class Test{
public static void main(String[] args){
//创建对象
Student s = new Student();
//访问属性
s.study();
}
}
class Student{
//成员变量
String name = "小花";
int age = 18;
public void study(){
//局部变量
String name = "小黑";
System.out.println(name+"学习");
}
}
7.方法的重载
引出案例:
import java.util.*;
public class Test{
public static void main(String[] args){
Person p = new Person();
}
}
class Person{
String name;
int age;
public void eat1(药){
}
public void eat2(馒头){
}
public void eat3(水){
}
}
概念:方法的重载(OverLoad)就是定义相同的方法名,参数列表不同,系统会根据所传的实际参数自动匹配相应的方法,以屏蔽方法间参数的差异
特点:
1.方法名相同
2.参数列表不同(顺序,数据类型,个数)
3.和返回值无关,和修饰符也无关
注意:
1.参数名不同不能叫做重载
案例:
//以下两个函数不能构成重载
//计算两个数的和
public void add(int a,int b){
System.out.println(a+b+"zz");
}//整数
public void add(int b,int a){
System.out.println(a+b+"zz");
}//整数
2.当一个类中,定义的方法的参数可能会出现比其他方法参数类型大的情况,那么这时就会遵循就近匹配的原则,当所传实际参数没有在类中匹配的方法,就会自动匹配比所传实际参数类型大的方法
案例:
import java.util.*;
public class Test{
public static void main(String[] args){
Sum s = new Sum();
s.add(100,100);
}
}
class Sum{
//计算两个数的和
public void add(int a,int b){
System.out.println(a+b+"zz");
}//整数
public void add(double a,double b){
System.out.println(a+b+"xx");
}//小数
}
构造方法
语法:
1.构造方法的方法名和类名一致(包括大小写)
2.构造方法没有返回值类型
3.构造方法可以重载
4.构造方法不可以手动调用
案例:
//构造方法
public Student(){
}
对象创建的过程:
第一步:分配空间,为属性赋默认值
第二步:为属性赋初始值
第三步:jvm调用构造方法完成创建对象
注意:当定义一个类时,如果没有定义构造方法,系统会自动添加一个公开的、无参构造方法,如果定义了有参构、无参构造方法造方法,系统就不再为这个类提供公开的,若还想使用无参构造方法,那么必须自己写出来。
案例:
import java.util.*;
public class Test{
public static void main(String[] args){
Student s = new Student();
}
}
class Student{
String name;
int age;
public void study(){
//局部变量
String name = "小花";
System.out.println(name+"学习");
}
}
构造方法的作用:
重新为属性进行初始化赋值