一、继承
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();
}
}
}