1.封装
是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
好处:将变化隔离;便于使用;提高重用性;安全性。
封装原则:将不需要对外提供的内容都隐藏起来,把属性都隐藏,提供公共方法对其访问。
2.继承
javase-继承
3.多态
注:protected修饰的,在不同包中通过对象不能访问,但继承后能在子类中访问。
1.局部变量必须初始化,而没有初始化的成员变量则会自动赋一个默认值。
2.成员变量直接定义在类中。
局部变量定义在方法中,参数上,语句中。
3.成员变量在这个类中有效。
局部变量只在自己所属的大括号内有效,大括号结束,局部变量失去作用域。
4.成员变量存在于堆内存中,随着对象的产生而存在,消失而消失。
局部变量存在于栈内存中,随着所属区域的运行而存在,结束而释放。
1.对象初始化时调用。
2.如果一个类中没有写构造方法,会有一个默认的无参构造方法,如果写上自定义的构造方法,默认的构造方法就不再起作用。
3.构造方法可重载,但不可重写,因为构造方法不可继承。
4.static不能修饰构造方法,因为构造方法是类创建对象时调用的,必须依赖于对象,而static则不依赖于对象。
5.final不能修饰构造方法,因为构造方法不能被继承,用final修饰方法的目的是不允许被重写,所以final修饰构造方法没有意义。
如:Cat c = new Cat();
1.创建对象的第一步在方法区中查找对象对应的类是否已经被加载,如果没有被加载,就加载这个类Cat.class,如果已经被加载了,就不在加载了。
2.方法区中加载不是类型的全部,而是在类型中有定义并且实现的方法。
3.加载完毕以后开始创建对象,对象在堆区,对象中会保存属性和方法的指针。
c.init("小张", 250, 250, 250, 520);
方法的调用过程
1.在Cat类型的定义中找到init方法的定义。找不到就报错。
2.找init方法的修饰符,看看能不能被调用,不能调用就报错。
3.从对象名保存的地址开始查找方法的指针,找到指针以后,从指针位置找到方法,并执行。
内存图:
1.this表示当前对象。
/*
2015年12月24日13:00:42
目的:this的用法。
*/
class A
{
public int i;
public A(int j)
{
i = j;
}
// public void show(A*this) this代表当前正在调用show方法的对象。
public void show()
{
//System.out.printf("i = %d\n", (*this).i);
System.out.printf("i = %d\n", i);
}
}
public class This_1
{
public static void main(String[] args)
{
//aa1和aa2可以通过隐藏的指针this,共用同一个方法show
A aa1 = new A(10);// aa1.show(aa1)
A aa2 = new A(20);// aa2.show(aa2)
aa1.show();
aa2.show();
}
}
/*
***************结果***************
i = 10
i = 20
*/
2.this()表示调用构造方法,但只能在构造方法中使用。