java0006——继承与多态

由于本人之前学过一点c++,相似的东西基本都学过,所以在这里只是把关键词,使用方法给列举出来,大家要多动手才能更好的理解继承与多态,当代程序员已经不是代码的编写者,而是调用者,所以继承与多态这一块一定要好好理解

  1. 继承的javashixian
    修饰符 子类 extends 父类
  • 单继承——子类只有一个父类
  1. 方法的继承
    方法的重写:个人认为是父类中已经有这个方法了,但是这个方法不能满足你写的要求,但是他有站着茅坑,不拉翔——跟我们想写的方法重名,那java给我们提供了重写的方法。
    注意子类重写的方法的访问权限不能低于弗雷德访问权限
  2. 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();
	}
}
  1. 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();
   }
}

执行效果:
鱼在游泳
鱼在吃东西
鱼在游泳
鱼在吃东西
鸭子爱吃虫子
鸭子在遥遥晃晃的跑
鸭子爱吃虫子
鸭子在遥遥晃晃的跑

猜你喜欢

转载自blog.csdn.net/qq_41448891/article/details/82808089