final 定义的常量 能在构造函数中初始化
常量我们一般设置为静态的 让所有对象共享这个变量节省内存空间
如果常量是静态的那么 我们再定义的时候就要初始化 因为 静态的常量我们没有初始化赋值 我们要这样
static final double PI=3.141592653
java中的继承机制用 exteds标识 ... java中不允许多重继承
方法的重载发生在一个类 方法的覆盖发生在 基类与子类
java提供了一种访问被覆盖的父类方法的一种机制 super 表示父类 我们可以访问父类被覆盖的方法
每个子类的构造函数 第一句隐含调用了 supper()构造父类 如果父类没有 无参数的构造函数 那么在子类编译的时候就可能报错 我们应该 在子类的构造函数
第一行 supper(参数 )
构造方法不能被继承 C++ java都一样
Fish从Animal继承而来
Animal an;
Fish b=new Fish();
an=b; //我们再调用函数的时候 调用的是Fish类的方法 因为我们是吧Fish类的引用赋值给了 Animal对象 这根C++ 基类的指针可指向子类 原理一样
多态性在C++中是父类的指针可以指向子类 根据子类的不同调用不同的方法
java中就是 吧不同子类 对象引用赋给 基类对象 传递谁的引用我们就调用谁的方法 如果子类有调用子类 子类没有调用父类
java的一个运算符 instanceof 判断对象是否是类的一个实例 子类对象是父类的一个事例 子类也是本身的一个实例
例如 Animal An ;
if(An instanceof Animal)
{
....... 判断对象是否是类的一个实例
}
例子 :
class Animal
{ int height ,weight; void breath() { System.out.println("breath"); } void eat() { System.out.println("eat"); }}
class Fish extends Animal{ }class Integration //要执行的类是包含 main函数的类 不是非要加public
{ public static void main(String []args) //参数一定要加 { Animal x=new Animal(); Fish y=new Fish(); x.eat(); y.eat(); x.breath(); y.breath(); }}
面向对象求面积:
class Function
{ float width,height; Function(float x,float y) { this.width=x; this.height=y; } float area() { return (width*height); }void show() { System.out.println("area is" + area()); } }
public class Rectangle
{ public static void main(String []args) { Function p=new Function(3,3); p.show(); }
}