理解:
面向对象是给予面向过程而言。面向过程是强调功能的,就像你要做一件事,有很多步骤方法,你要去完成它,则需要你亲自一步一步完成。面向对象具备这些功能是强调对象,对象则具备这些功能(把功能封装进对象),就像你有个多啦A梦,这些步骤方法它都会,当你要做一件事,你只要找到它就可以了,它可以给你完成这件事,你只要等结果就好。(不知道这样解释对不)
类与对象
类是事物的描述,是共性的。 就像人,比较笼统。
对象是这种事物所真实存在的个体。 就像有名有姓的你,非常具体。
成员变量和局部变量
成员变量作用于类中,局部变量作用于函数、方法中。其实就是看大括号,在哪个括号里,就作用在哪个括号的范围。(只看一层括号)
存储位置:成员变量在堆内存中,因为成员变量跟着对象的存在而存在,对象的建立要用 new 这是在堆中开辟空间。
局部变量在栈内存中。
匿名对象的使用
只能调用一次,调用后由于没有被其他地方使用,执行完后,会被作为垃圾回收掉。
public class gdg {
public static void main(String[] args) {
// TODO Auto-generated method stub
new Cat().age=3; //执行完就回收,没有实际意义
new Cat().furcolor="yellow";//执行完就回收,没有实际意义
System.out.println(new Cat().furcolor);//结果是red并不因为上面改了而改变
new Cat().catchmouse();//像这样只调用一次方法是可以使用,你若想在这基础上再 //调用其他的就不行了。就只能new一个对象,并 //起个名字
}
}
class Cat{
String furcolor = "red";
int age = 2;
void catchmouse(){
}
}
面向对象的三大特征:封装、继承、多态。
封装:隐藏对象的属性和实现细节,仅对外提供访问方法。常用private
面向对象的构造函数
特点:函数名与类名一致
不用定义返回值
不可以写return语句
当对象一建立,构造函数就随之被调用。
作用:给对象初始化
构造函数可以被重载。在new一个新对象时,构造函数只调用一次,而其他一般的函数则可以调用多次。
this 关键字
代表使用该方法的对象的引用。即谁在调用this所在的函数,this就代表这谁。
public static void main(String[] args) {
TestThis tt = new TestThis(100);
tt.increament().increament().print();
}
}
class TestThis{
int i = 0;
TestThis(int i)
{
this.i = i;
}
TestThis increament()
{
i++;
return this;
}
void print()
{
System.out.println("i="+i);
}
}
tt指向new出来的对象
tt.increament(),i先自加 变成101
然后返回对象本身,即在内存中新分配一临时变量,指向对象自己
tt.increament().increament(),i先自加 变成102
然后返回对象本身,即在内存中又一次新分配一临时变量,指向对象自己
最后调用输出语句,输出102; |
|