面向对象的思维方法:
(1)首先确定谁来做,其次确定怎么做
(2)首先考虑整体,其次考虑局部
(3)首先考虑抽象,其次考虑具体
程序由类堆积起来,使用类创建对象,真正执行操作的是对象
数据类型分为基本/引用
java虚拟机把内存分为栈内存(存放对象名字,即引用)和堆内存(存放数据本体)名字代表了对象,而不是对象本身
Dog d=new Dog();创建一个Dog的引用 在栈内存
Dog d=new Dog();创建一个Dog的对象 在堆内存
Dog d=new Dog();联系起来,名字指向对象
凡是见到new就在堆内存中生成了一个新对象
类是抽象的,指一系列具有共同体特征的事物;对象是具体的
对象.属性 可以把.翻译成”的“以方便理解
匿名对象:可以不定义对象的引用名称,而直接调用这个对象的方法。e.g.new Dog().jump();
匿名对象通常都是一次性的
构造函数不算做成员函数。
构造函数特征:1.没有返回值类型的定义2.名字必须与类名相同
编译器在编译时会检查类中有无构造函数,没有时编译器会自动加一个无参数且方法体为空的构造函数,已有则不会加
向上转型:
一个引用能够调用哪些成员(变量和函数),取决于这个引用的类型。
一个引用调用的是哪一个方法,取决于这个引用所指向的对象。
向上转型不可能失败,一定成功。
向下转型:
向下转型的前提是首先向上转型。先把一个对象向上转型,再强制转换向下转型
将父类的对象赋值给子类的引用:
Student s1=new Student();
Person p=s1;
Student s2=(Student)p;