初见Java继承and多态及instanceof的使用

本文详细介绍了Java中的继承机制,包括如何正确引用父类,以及重载和重写的概念。通过实例演示了如何在子类中实现多态,并使用`instanceof`进行类型判断。重点讨论了这两个核心编程特性在实际项目中的应用。
摘要由CSDN通过智能技术生成

一、继承

public class people {
    //类定义部分,而类定义部分就是在父类的基础上继续添加新的属性和方法

}

语法访问修饰符  class  子类名 [extends 父类名]{
                   //类定义部分
          } 

即:

public class a extends b{
                  //类定义部分
}


如:
      假设我们先创建父类为:
                                 

public class people{
    //类定义部分
}


那么:
        子类就为:
                     

 public class Boy extends people{
            //类定义部分
 } 

 这个时候它就会报错,那为什么报错呢?

因为子类没有引用父类,那又怎么去引用父类呢?

语法:import  父类所在的包名.父类名

例如:父类people在qaz包里,子类在wsx包里

那么这个引用的代码就为:

import qaz.people;

说到这里那我们简单的解释一下什么是

所谓的包就相当于一个文件夹,文件夹里面包含了许多的类文件

如图:

那我们怎么创建包呢? 

右键点击src,点开创建,点击包就创建完成了

注意在使用继承特性的时候,子类继承父类的访问权限为public、protected、default的成员变量和方法!!!

那我们接下来看看一个例题:

 

分析题目可知我们要创建两个类,一个父类people类,一个Boy子类,

那么议题可写出以下代码:

父类:

package qaz;

public class people {
    String name;
    String xb;
    int age;
    public void talk() {
        System.out.println("我是people");
    }
    public void run(double sd) {
        System.out.println("我跑步的速度是"+sd+"m/s");
    }

    public static void main(String[] args) {
        // TODO 自动生成的方法存根
        people a=new people();
        a.run(20);

    }

}

子类:

package wsx;

import qaz.people;

public class Boy extends people {

//类定义部分

}

 


二、多态

1、多态一共分为两大种:重载 and 重写

2、重载:方法的重载,是指一个类的多个方法可以具有相同的方法名,但这些的方法的参数必须不同

例如:

public void a() {
        //类定义部分
    }

public void a(double i){

        //类定义部分

}

那我们接下来看看一个例题:

我们分析可以看出,这里的方法名两个都是talk,很明显这道题就需要用到重载

那么,我们该如何写出这道题的代码呢,让我们继续往下看,

如下:

package wsx;

import qaz.people;

public class Boy extends people {
	String xb="男";
	String videoGame="电子游戏";
	public void talk() {
		System.out.println("我是boy");
	}
	public void talk(String videoGame) {
		this.videoGame=videoGame;
		System.out.println("我是boy,我喜欢"+videoGame);
	}

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		people p=new Boy();
		if(p instanceof Boy) {
			Boy boy=(Boy)p;
			boy.talk("电子游戏");
		}else {
			p.talk();
		}

	}

}


 

3、重写:重写简单的来说子类扩充了父类,子类以父类为基础,额外增加了新的属性和方法

例如:

父类为:

public class people {
    String name;
    String xb;
    int age;

}

子类就为:

public class people {
    //类定义部分,而类定义部分就是在父类的基础上继续添加新的属性和方法

}

4、重载和重写的两个不同点

(1)重载是写在一个类里面,而重写写在两个类里面

(2)重载的方法名必须相同,而重写可以不同

 

三、instanceof

instanceof是一种算数运算符。前面跟的是属性,后面跟的是类,它用于判断前面的属性是不是属于后面的类

例如:

p instanceof Boy

这个p就是属性,Boy就为类

 

如果还是不清楚的话,接下来可以看看我们今天的题目,可以尝试着自己去做,

题目如下:

这道题的代码就全部放在下面啦:

package qaz;

public class people {
	String name;
	String xb;
	int age;
	public void talk() {
		System.out.println("我是people");
	}
	public void run(double sd) {
		System.out.println("我跑步的速度是"+sd+"m/s");
	}

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		people a=new people();
		a.run(20);

	}

}
package wsx;

import qaz.people;

public class Boy extends people {
	String xb="男";
	String videoGame="电子游戏";
	public void talk() {
		System.out.println("我是boy");
	}
	public void talk(String videoGame) {
		this.videoGame=videoGame;
		System.out.println("我是boy,我喜欢"+videoGame);
	}

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		people p=new Boy();
		if(p instanceof Boy) {
			Boy boy=(Boy)p;
			boy.talk("电子游戏");
		}else {
			p.talk();
		}

	}

}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值