面向对象编程:开发一个一个的对象,把数据交给对象,再调用对象的方法来完成对数据的处理。
1)入门例子:用面向对象的方法处理学生数据
package object;
public class Student {
String name;
double chinese;
double math;
public void printTotalScore(){
System.out.println(name+"的总成绩为"+(chinese+math));
}
public void printAverageScore(){
System.out.println(name+"的平均成绩为"+(chinese+math)/2.0);
}
}
package object;
public class test {
public static void main(String[] args) {
//创建一个学生对象,封装小王的数据
Student n1=new Student();//在堆内存中开辟一块内存区域代表一个学生对象。
//且n1存储的是对象的地址,n1也称为引用类型的变量
//某个变量中如果存储的是一个对象的地址,那么这个变量为引用类型的变量。
="小王";
n1.chinese=100;
n1.math=90;
n1.prnitTotalScore();
n1.printAvergeScore();
}
}
程序中的对象:对象本质上是一种特殊的数据结构。
类(class)是对象的设计图,对象的模板。
2)类和对象的一些注意事项:
java存在自动垃圾回收机制,会自动清除掉垃圾对象。
3)this关键字
this就是一个变量,可以用在方法中,来拿到当前对象。,哪个对象调用方法,this就指向哪个对象。
package object;
import com.sun.javaws.IconUtil;
public class Student {
public void printThis(){
System.out.println(this);
}
}
package object;
public class test {
public static void main(String[] args) {
Student n1=new Student();
n1.printThis();//结果为object.Student@4554617c
System.out.println(n1);//结果也为object.Student@4554617c
}
}
由上例可得this存储指向对象的地址。
this主要用于解决变量名称冲突。
public class Student {
double score;
public void printPass(double score){
//this.score是表示当前学生变量的score,避免了score名称的冲突。
if(this.score>score){
System.out.println("恭喜您录取了");
}else{
System.out.println("您未被录取");
}
}
}
4)构造器(创造对象时,对象会去调用构造器)
package object;
import com.sun.javaws.IconUtil;
public class Student {
//无参数构造器
public Student(){
System.out.println("无参数构造器");
}
//有参数构造器
public Student (int a,int b){
System.out.println("有参数构造器");
}
}
package object;
public class test {
public static void main(String[] args) {
Student n1=new Student();//会根据括号中的内容来决定使用哪个构造器.
//运行结果为无参数构造器
Student n2=new Student(10,20);
//运行结果为有参数构造器
}
}
构造器的常见应用场景
a)对象创建时,我们可以指定对象去调用哪个构造器执行。
b)创建对象时,同时完成对对象成员变量(属性)的初始化赋值。
public class Student {
String name;
double score;
public Student (String name,double score){
System.out.println("有参数构造器");
=name;
this.score=score;
}
//定义完类后可以通过以下注释内容完成对对象成员变量的初始化赋值。
/*
public class test {
public static void main(String[] args) {
Student n2=new Student("小王",100);
}
}
*/
}
构造器的注意事项:
a)类在设计时,如果不写构造器,java会为类自动生成一个无参构造器。
b)一旦定义了有参数构造器,java就不会帮我们的类自动生成无参构造器,此时就就建议自己手写一个无参构造器出来;
5)封装
定义:用类设计对象处理某一个事物的数据时,应该把要处理的数据,以及处理这些数据的方法,设计到一个对象中去。