1.面向对象:面向对象是基于面向过程,对象是将功能进行了封装。只要找到了具体的建出对象,就可以调用其中的具体功能。面向对象也是用来解决问题的一种思维模式。
1)对象:通俗的来说:万事万物皆对象。现实世界中可以明确标识的一个实体就是对象,例如:一个学生,一张桌子,一个圆。每个对象都有自己独特的状态和行为。
a)状态:也称为特征或属性,是由具有当前值的数据域来表示的。例如圆对象有一个数据域radius,它是标识圆的属性
b)行为:也称为动作是由方法定义的。调用对象的一个方法就是要求对象完成一个动作。例如:可以为圆对象定义一 个名为 getArea()方法,则园对象可以通过getArea()得到圆的面积
2)类:类是具有相同属性和方法的一组对象的集合。类定义了对象将会拥有的特征(属性)和行为(方法)。就如“物以类 聚 人以群分”。
3)类与对象的关系: 类于对象的关系就如同模具和用这个模具制作出的物品之间的关系。一个类给出他的全部对象的一个 统一的定义,而它的每个对象则是符合这种定义的一个实体。因此类和对象的关系就是抽象和具体的关系。类是多个多个对象进行综合抽象的结果,是实体对象的概念模型,而一个对象是一个类的实例。
4)如何去定义一个类?
一般而言主要描述两个方面:
属性:可以用一些参数描述类的信息
行为:可以用一系列的动作描述类的信息
public class 类名{
// 1.此类的相关属性(成员变量)
// 2.此类的相关方法(成员方法/函数)
}
例如定义一个学生类:
public class Student{
// 相关属性
姓名
学号
班级
专业
性别....
// 相关方法
学习
考试
作业...
}
注意:主类 : 主要用于运行程序 作为程序的开始 存在主函数main。
实体类: 主要用于描述事物 但不推荐写主函数
2.构造函数:构造函数具有和定义它的类完全相同的名字。和所有其他方法一样,构造函数可以重载。
1)三个特征:构造方法必须具备和所在类相同的名字。
构造方法没有返回值类型,甚至连 void 也没有。
构造方法是在创建一个对象使用 new 操作符时调用的。
注意:如果类中没有定义任何构造函数的话 会有一个隐藏的无参构造函数 ,如果类中有定义构造函数 则默认的无参构造函数则不存在。
2)作用:一般用来初始化成员属性和成员方法的,即new对象产生后,就调用了对象了属性和方法。
3)构造函数与一般函数的区别:
一般函数不能调用构造函数,只有构造函数才能调用构造函数。
构造函数没有返回值
构造函数只有在创建对象时调用, 一般函数在对象创建之后由对象调用,一般函数可以被调用多次。
4)示例:
class Demo01{
public static void main(String[] args) {
Con c1=new Con(); //输出Hello World。new对象一建立,就会调用构
//造函数Con(),并执行其中的println语句。
}
}
class Con{
Con(){ //定义无参构造函数,输出Hello World
System.out.println("Hellow World");
}
}
3.成员变量和局部变量:
1)在类中的位置不同:
成员变量在类中,方法外。
局部变量在方法声明上,方法中。
2)在内存中的位置不同:
成员变量属于对象,进堆内存。
局部变量属于方法,进栈内存。
3)生命周期不同:
成员变量随着对象的创建而存在,随着对象的消失而消失。
局部变量随着方法的调用而存在,随着方法的调用完毕而消失。
4)初始化值不同:
成员变量有默认的初始化值( 引用数据类型初始化值为null;整数初始化值为0; 小数初始化值为0.0;布尔初始化值为false;字符初始化值为‘\u0000’)
局部变量没有默认初始化值,必须先定义,再赋值,然后再能使用。
注意:局部变量名称可以和成员变量名称一致,调用时采取就近原则。
4.private关键字:可以修饰成员变量和成员方法,被其修饰的成员只能在本类中被访问
注意:在定义类时给成员变量赋值private,并提供get和set方法用于外部访问,这样可以提高数据的安全性
若对成员方法 private,该方法只能在本类访问,其他不能访问。
public class pritry {
private int age ;
private String name ;
public int getAge() { //访问age
return age;
}
public void setAge(int age) { //修改age
this.age = age;
}
public String getName() { //访问name
return name;
}
public void setName(String name) { //修改name
this.name = name;
}
}
public class pritest {
public static void main(String[] args) {
pritry p = new pritry();
p.setAge(10);
p.setName("张三");
System.out.println(p.getAge()+" "+p.getName());
}
}