很多时候如果我们需要写很多个具有相同属性、方法的类。写起来就会很重复做很多的工作。这时候我们可以用到继承。
1、继承是什么。
继承是让一个类(子类)拥有另一个类(父类)的所有属性、方法。。
格式:
public class 子类名 extends 父类名{ }
这里呢,我们需要用到一个关键词 :extends 。
让我们举例一下现实生活中 一些继承关系的类。
(父类):水果
(子类): 苹果 、雪梨 、砂糖橘
那么父类有什么属性和方法呢 。
水果:
属性:名称、颜色、重量。
方法:吃。
//定义一个水果的类 public class Fruits{ //名称 public String name; //颜色 public String colour; //重量 public int weight; //定义一个吃水果的方法 public void eat(){ //输出 这是吃水果的办法 System.out.println("这是吃水果的办法"); }
}
然后我们创建一个子类(苹果)。
public class Apple extends fruits { //主方法 public static void main (String[]args){ //创建苹果类的对象 Apple A=new Apple(); //调用方法 //调用取水果名字的方法 A.Fname("苹果"); //调用吃水果的方法 A.eat(); } }
然后运行一下
这是吃水果的办法,水果名是苹果
2、继承中方法的重写 。
重写就是重新定义(父)类的方法。
需要注意的是1、必须有继承关系。
2、方法的声明,除了访问权限氪扩大,其他必须一致。
public class Apple extends fruits { //方法的重写 public void eat(){ //输出 这是吃水果的办法 System.out.println("这是吃苹果的办法,水果名是"+name); } //主方法 public static void main (String[]args){ //创建苹果类的对象 Apple A=new Apple(); //调用方法 //调用取水果名字的方法 A.Fname("苹果"); //调用吃水果的方法 A.eat(); } }
然后运行,就可以看见方法就变成了我们重写后的方法。
这是吃苹果的办法,水果名是苹果
自动转型 :
3、自动转型:
子类对象可以自动的变为父类对象。
自动转型后、重写的方法调用,以重写的子类为准。
我们再创建一个雪梨的类
public class pear extends fruits{ }
然后我们在苹果类中创建一个雪梨的对象。
public class Apple extends fruits { //方法的重写 public void eat(){ //输出 这是吃水果的办法 System.out.println("这是吃苹果的办法,水果名是"+name); } //主方法 public static void main (String[]args){ //创建苹果类的对象 fruits A=new Apple(); //创建雪梨的对象 fruits X=new pear(); //调用方法 //调用取水果名字的方法 A.Fname("苹果"); //调用吃水果的方法 A.eat(); X.Fname("雪梨"); X.eat(); } }
运行一下
这是吃苹果的办法,水果名是苹果
这是出水果的办法,水果名是雪梨
4、访问权限修饰符:
即访问权限控制被修饰的内容被使用的时候能在那些地方使用。
访问权限修饰符分为:
1、public;
2、protected;
3、 ;
4、private;
下面表格是具体的是否能被使用的情况:
访问权限修饰符 | 当前类中 | 同一个包下 | 不同包下的子类 | 其他 |
public(公共的) | 可以使用 | 可以使用 |
可以使用 |
可以使用 |
protected(子类都可以使用) | 可以使用 | 可以使用 |
可以使用 |
|
缺省(什么都不写) | 可以使用 | 可以使用 |
|
|
private(私有的) | 可以使用 |
|
。