首先我们要了解在面向对象中,类和对象的关系:类是对象的抽象,而对象是类的具体实例。
类:对一类事物的描述,是抽象的,概念上的描述;
对象:是实际存在的该类事物的单个个体,也称之为具体实例!
面向对象程序设计的重点就在于类的设计,而类的设计就是类的成员的设计!!
JAVA类及类的成员有哪些:属性,方法,构造器,代码块,内部类。
- 属性对应着类中的成员变量;
- 方法对应着类中的成员具有的功能;
比如,人类person,
属性为:姓名name,年龄age,等等;
方法为:吃饭eat,睡觉sleep,可以说话talk language,等等
代码显示就是:
public class Person {
String name;
int age;
public void eat(){
System.out.println("人会吃饭");
}
public void sleep(){
System.out.println("人会睡觉");
}
public void talk(String language){
System.out.println("人会说话,使用的语言是"+language);
}
测试:
public class Test {
public static void main(String[] args) {
//创建Person类的对象
Person p1 = new Person();
//调用对象的结构:属性,方法
//调用对象属性:“对象.属性”
//调用对象方法:“对象.方法”
p1.name="张三";
p1.age=16;
System.out.println("姓名"+p1.name+",年龄"+p1.age);
p1.eat();
p1.sleep();
p1.talk(English);
}
}
设计类的成员,创建类的对象,通过“对象.属性”或者“对象.方法”调用对象的结构!当然,一个类中有多个对象,那么每个对象有自己独立的属性和方法!!!写道这里就不得不说属性中的两个变量:成员变量和局部变量
相同点:
- 定义变量的格式: 数据类型 变量名 = 变量值
- 先声明,后使用
- 变量都有其对象的作用域
不同点有:
一、作用域不同:
1)局部变量的作用域仅限于定义它的方法:有以下两种方式
//第一种不推荐
public void print() {
String name="张三";
System.out.println(name);
}
//第二种推荐
public void print(String name) {
System.out.println(name);
}
print()方法外部获取直接报错
public void print2() {
System.out.println(name);(这里的name会直接报错)
//name cannot be resolved to a variable
}
2)成员变量的作用域在整个类内部都是可见的
String name="张三";//成员变量(类内容都可以访问)
public void print() {
System.out.println(name);
}
二、初始值不同:
1)JAVA会给成员变量一个初始值
int age;这样age=0。
2)JAVA不会给局部变量赋予初始值
int age;
System.out.println(age);这里的age会报错,必须给age赋值,如age=1;
//The local variable age may not have been initialized
在JAVA中,方法的定义:
()内的就是方法
()前面的就是方法名
方法名前面的就是返回值类型
返回值前面的就是修饰符
()后面的就是{},{}中的就称之为方法体
构造方法的定义、特点、种类
定义:
访问修饰符 构造方法名(){}
特点:
1、无返回值
2、方法名和类名相同
3、可指定参数
种类:
1、无参构造(系统默认)
public class Person {
创建的一个无参构造方法
public Person() { }
2、有参构造
public class Person {
创建一个有参构造方法
public Person(int count) { }
3、普通方法
public void print() { }
方法的调用:
1)、调用无参构造器的方式
Person p=new Person();
2)、调用有参构造器的方式
Person p=new Person(5);
3)、普通方法的调用方式
Person p=new Person();
p.print();
方法的两种类型
1)有返回值方法
public 类型 方法名(){
return xx; 有返回值的方法必须有return返回
}
2)无返回值方法
public void 方法名(){
无返回值的方法不能有return返回
}
调用返回值方法的方式
调用marong对象add()方法,赋给变量a,变量a的类型为int
int a=marong.add();
输出变量a的值
System.out.println(a);
写到这里,就不得不说在方法中,实参和形参的区别
形参
public void add(int count) {
add(int count)方法中的count为形参,所谓的形参就是无具体的值
System.out.println(count);
}
实参
public static void main(String[] args) {
Person p1=new Person();
p1.add(5);
add(5)中的5为实参,所谓的实参就是具体的值
}
方法重载:
1)同一个类中
2)方法名相同
3)参数项不同(个数或者类型不同)
标准的方法重载
public void a(int a) { }
public void a(String a) { }
4)和返回值和访问修饰符无关
和返回值无关
public int a(){ }
public void a(){ }
和修饰符无关
public int a(){ }
private int a(){ }