由于本人之前学过一点c++,相似的东西基本都学过,所以在这里只是把关键词,使用方法给列举出来,大家要多动手才能更好的理解继承与多态,当代程序员已经不是代码的编写者,而是调用者,所以继承与多态这一块一定要好好理解
- 继承的javashixian
修饰符 子类 extends 父类
- 单继承——子类只有一个父类
- 方法的继承
方法的重写:个人认为是父类中已经有这个方法了,但是这个方法不能满足你写的要求,但是他有站着茅坑,不拉翔——跟我们想写的方法重名,那java给我们提供了重写的方法。
注意子类重写的方法的访问权限不能低于弗雷德访问权限 - super关键字
this表示当前类,super表示父类
父类与子类重名之时,用super来访问父类中的元素
class FatherClass {
int a;
public void showA() {
System.out.println(a);
}
}
class Child extends FatherClass {
int a = 10;
public void ShowA() {
System.out.println(a);
}
public void showSuperA() {
super.a = 20;
super.showA();
}
}
public class Demo {
public static void main(String[] args) {
// TODO Auto-generated method stub
Child demo = new Child();
demo.ShowA();
demo.showSuperA();
}
}
- object 类
是其他类的父类
- object 类没有属性只有方法
- 克隆方法 //自己百度
- equals 判等法,判断两个对象是否相等
public boolean equals(object obj){
return (this ==obj);
}
- 哈希码方法hashCode,得到对象的哈希码首部为
public int hashCode();
- 返回此对象运行是的类对象
pubic final Class<?> getClass(); - 抽象类与抽象方法
抽象类——访问权限 abstract class 类名
该类只能被继承,而不能 创建对象
抽象方法——访问修饰符 abstract 返回类型 方法名 (形参)
关系 : - 一个类中有抽象方法就必须是抽象类
- 一个抽象类中可以有抽象方法,也可以有非抽象方法
- 子类诺继承抽象类,需对抽象方法进行重新,如果子类没有重写抽象方法,那么子类也是抽象类,必须用abstract 修饰
- 最终类和最终方法
访问修饰符 final class 类名
不能再被继承,有固定作用,例如Math类
abstract与final不能同时使用,abstract也不能同时与private,static,final 一起使用。 - 多态与多态实例
就是在一个父类的基础上,通过new 不同的子类来实现与直接使用子类相同的功能,这样可以更加直观的看到这两个子类都来自同一个父类
-父类的文件
package Blank;
public abstract class Animal{
protected String name;
public abstract void run();
public abstract void eat();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Animal(String name) {
super();
this.name=name;
}
public Animal () {
this.name="没有";
}
@Override
public String toString(){
return "Animal [name="+this.name+"]";
}
}
- 子类的文件
package Blank;
class Fish extends Animal{
public void run() {
System.out.println("鱼在游泳");
}
public void eat() {
System.out.println("鱼在吃东西");
}
public Fish() {
super("鱼");
}
public Fish(String name) {
super(name);
}
}
class Duck extends Animal{
public final void run() {
System.out.println("鸭子在遥遥晃晃的跑");
}
@Override
public final void eat() {
System.out.println("鸭子爱吃虫子");
}
}
public class duotai {
public static void main(String[] args) {
Animal a1 =new Fish();
Fish f1=new Fish();
Animal a2 =new Duck();
Duck d1=new Duck();
a1.run();
a1.eat();
f1.run();
f1.eat();
a2.eat();
a2.run();
d1.run();
d1.eat();
}
}
执行效果:
鱼在游泳
鱼在吃东西
鱼在游泳
鱼在吃东西
鸭子爱吃虫子
鸭子在遥遥晃晃的跑
鸭子爱吃虫子
鸭子在遥遥晃晃的跑