Java ----- 多态与继承

本文介绍了Java编程中的继承和多态概念。继承允许子类继承父类的属性和方法,实现代码复用。Java中的继承使用`extend`关键字,`super`用于调用父类构造器和方法。文章还展示了如何重写方法以及注意事项。多态则是指同一行为在不同对象上有不同表现,通过实例展示了如何在动物类中实现多态调用,增强了代码的拓展性。
摘要由CSDN通过智能技术生成

一、继承

继承:继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

子类和父类:

        如果类class1继承自另一个类class2,那么就将class1称为是子类,将class2称为父类。子类从它的父类当中继承可以访问的数据域和方法,还可以添加新的数据域和方法。

继承关键字

1.extend

在Java中类的继承是单一继承,一个子类只能拥有一个父类,使用extend只能继承一个类。

public class GeometricObject{
    private String color = "white";
    private java.util.Date dateCreated;

	public GeometricObject() {
		dateCreated = new java.util.Date();
	}
	public GeometricObject(String color, boolean filled) {
		dateCreated = new java.util.Date();
		this.color = color;
		this.filled = filled;
	}
    
    public String getcolor(){
        return color;
    }
    public void setColor(String color){
        this.color = color;
    }
	public java.util.Date getDateCreated(){
		return dateCreated;
	}
	public String toString() {
		return "created on" + dateCreated + "\ncolor: " + color + "and filled: " +
	filled;
	}

}


public class Circle extend GeometricObject{
    private double radius;
    public Circle(){

    }
    public void printCircle(){
    System.out.println("The circle's radius is" + radius); 

    }
    
}

2.super

要点:关键字super指代父类,可以用于调用父类中的普通方法和构造方法

调用父类构造方法的语法:

super() 或者 super(arguments)

public Circle(double radius,String color){
    super(color);
    this.radius = radius;
}

调用父类的普通方法:

关键字super不仅可以引用父类的构造方法,也可以引用父类的方法:

super.方法名(参数)

 如重写Circle类中的printCircle()方法:

public void printCircle(){
    System.out.println("The circle is created" + super.getDateCreated());
}

方法重写

要重写一个方法,需要在子类中使用父类和父类一样的签名来对该方法进行定义。

在上面GeometricObject类中的ToString方法,该方法可以被重写,为了重写它,要在子类Circle中加入下面的新方法:

public class Circle extend GeometricObject{
    

    public String toString(){
        return super.toString() + "\nrsdius is + + radius;
    }
    
}

重写时需要注意

重写的方法必须与被重写的方法具有一样的签名,以及一样或者兼容的返回类型。

只有当实例方法可访问时,它才能被重写。

与实例方法一样,静态方法也能被继承,但是,静态方法不能被重写。

二、多态

多态:多态是同一个行为具有多个不同表现形式或形态的能力。

举一个简单的例子:森林里面有很多的动物,他们都有一个共同的行为------吃,而有些动物吃肉,有一些动物吃的是草。所以多态就是对于吃这一行为来说,不同的动物对吃这一行为所表现的行为都不尽相同。

多态案例:

需要注意的是:当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,执行的是子类重写后方法。如果子类没有重写该方法,就会调用父类的该方法。

定义父类:

public class Animal {

    public void eat() {
        System.out.println("动物都会吃东西!!!");
    }
}

定义肉食动物类:

public class Tiger extends Animal{

    public void eat() {
        System.out.println("老虎喜欢吃肉!");
    }
}

定义食草动物类:

public class Horse extends Animal{

    public void eat() {
        System.out.println("马喜欢吃草!");
    }
}

测试:

public class Test {
    public static void main(String[] args) {
        
        Animal animal = new Cat();  // 多态形式,创建虎类对象
        animal.eat();       // 调用的是Tiger的 eat        
        Animal animal2 = new Dog();   // 多态形式,创建马类对象
        animal2.eat();     // 调用的是Horse的eat
    }  
}

输出:

老虎喜欢吃肉!

马喜欢吃草!

多态的好处 :

提高了代码的拓展性,使用父类类型作为方法形式参数,传递子类对象给方法,进行方法的调用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值