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();
}
}