一、问题
- 什么叫面向对象?
- 面向对象的特征有哪些?
- 什么叫类?
- 如何定义一个类?
- 如何创建一个对象?
看完本篇至少自己心中有一份属于自己的答案~~
二、面向对象的概述
一、类的定义
类是一种复杂的数据类型
它是将数据和与数据相关的操作封装在一起的集合体
二、类与对象的关系
1、类为对事物的描述,具有属性和行为;
2、对象是该类事物创建的实体,通过对象调用。
3、一切事物皆对象,在Java中描述事物通过类的形式体现,类是具体事物的抽象。
三、类的组成
类分为两部分:类的声明和类的主体。
<类 声明>
{
<类主体>
}
类主体部分是由成员变量和方法组成,不可以在类中直接写表达式语句,它必须放到一个方法里。
class Circle{ //类声明,类的命名第一个字母大写以便与对象区别
int r; //成员变量,或称为类的属性
……
void print(){ //成员方法
int r=3; //局部变量
System.out.println(r);
}
}
//整个大括号里的称为类的主体部分
四、对象的概念
对象 是 类的实例化
public static void main(String [] args){
Circle circle=new Circle (); //实例化一个circle 对象
circle.r=1;
...
circle.print(); //对象的方法调用
}
五、 创建对象的格式
类名 对象名 ==> Circle circle=new Circle ();
六、对象的使用
circle.r=1; // 对象的属性调用
circle.print(); // 对象的方法调用
总结:简简单单的总结了一下面向对象的基本概念,实际上自己也知道面向对象的思想绝非三言两语就能说明白的,在此只是为让自己以最简单的门槛来入门,为的是以后探索更深邃的内容~~哈哈
还有要补充的内容:
1、main()方法介绍
3、static关键字
4、成员变量和局部变量、实例变量和类变量(自己老傻傻的分不清)
5、this关键字介绍
6、面向对象的三大特征 :封装,继承,多态
7、方法的重载的概念
一、main() 方法
public class HelloWorld {
public static void main( String [] arg){ // main 方法
System.out.print("hello 九九乘法表");
System.out.print("\n");
for(int i=1;i<=16;i++){
for (int j=1;j<=i;j++){
System.out.print(i+"*"+j+"="+i*j+" ");
}
System.out.print("\n");
}
}
}
main()方法为静态的,在java虚拟机中执行main()方法时不需要创建main()方法所在类的实例就可调用,因为有static修饰。
总结:
其实main方式和普通的静态方法没有太大的区别,唯一的区别就是它被JVM选择做了Java应用程序的入口。
二、static关键字
使用static修饰的成员变量为静态变量;
用static修饰的类,为静态类,
用来修饰方法,则为静态方法。
静态变量是归类所有,静态变量直接通过类调用,而不用实例化对象。
静态方法也是用类名直接调用的。静态方法只能操作静态变量而不能使用实例变量。
静态随类的加载而加载,优先于对象存在。静态方法中不能用this,super。
三、变量
(1)、成员变量和局部变量区别:
成员变量:
1、成员变量定义在类中,在整个类中都可以被访问。
2、成员变量随着对象的建立而建立,随着对象的消失而消失,存在于对象所在的堆内存中。
3、成员变量有默认初始化值。
局部变量:
1、局部变量只定义在局部范围内,如:函数内,语句内等,只在所属的区域有效。
2、局部变量存在于栈内存中,作用的范围结束,变量空间会自动释放。
3、局部变量没有默认初始化值
在使用变量时需要遵循的原则为:就近原则
首先在局部范围找,有就使用;接着在成员位置找。
(2)、成员变量和类变量的区别:
先看一张图
1、两个变量的生命周期不同
成员变量随着对象的创建而存在,随着对象的回收而释放。 静态变量随着类的加载而存在,随着类的消失而消失。
2、调用方式不同
成员变量只能被对象调用。 静态变量可以被对象调用,还可以被类名调用。
3、别名不同
成员变量也称为实例变量。 静态变量也称为类变量。
4、数据存储位置不同
成员变量存储在堆内存的对象中,所以也叫对象的特有数据。 静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据。
下面是代码说明
class MyAdd {
int count = 0; //成员变量(实例变量)计数器
static int sum = 0; //静态变量(类变量) 计数器
String name;
// 构造函数
MyAdd(String name){
this.name = name;
}
public void myAddMethod() {
count++;
System.out.println(name+"调用成员变量后的值:"+count);
}
public void staticAddMethod() {
sum++;
System.out.println(name+"调用类变量后的值:"+sum);
}
}
public class HelloWorld {
public static void main( String [] arg){
MyAdd add1 = new MyAdd("add1");
MyAdd add2 = new MyAdd("add2");
add1.myAddMethod();
add2.myAddMethod();
add1.myAddMethod();
}
}
运行结果:
add1调用成员变量后的值:1
add2调用成员变量后的值:1
add1调用成员变量后的值:2
总结 : 成员变量存储在堆内存的对象中,所以也叫对象的特有数据。
而,
public class HelloWorld {
public static void main( String [] arg){
MyAdd add1 = new MyAdd("add1");
MyAdd add2 = new MyAdd("add2");
add1.staticAddMethod();
add2.staticAddMethod();
add1.staticAddMethod();
}
}
运行结果:
add1调用类变量后的值:1
add2调用类变量后的值:2
add1调用类变量后的值:3
总结 :静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据。
四、this关键字介绍
this代表使用该方法的当前的对象,可用于实例方法或者构造方法中。
void setAge(int age){
this.age = age;
}
// 构造函数中
Person(String name, int age){
this.name = name;
this.age = age;
}
总结:以上都是概念性的东西,个人认为理解的还不是很清楚,不过没关系啦,佛经也不是一天能参悟的了的,持之以恒的去看去想,然后加之实践会有大的改变的。