一.子类与父类
父类又叫超类、基类
子类又叫派生类
继承的基本语法是:访问修饰符 class 子类(派生类)extend 父类(基类、超类){}
子类会继承父类中所有的属性和方法,但私有属性和方法不能直接使用;
super都只能放在构造器的第一行;
且在Java中,所有类的建立都会默认是创建在一个Object的子类,所以Objet是所有类的父类而且不显示extend关键字;
子类继承父类时访问修饰符的访问权限将大于等于父类的访问权限;
一个子类只能单继承一个父类。
例:
父类:
public class food {
private String name;
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void cooking( ){
System.out.println(name+"正在被备菜。");
}
}
子类:
public class meat extends food {
@Override
public void cooking( ) {
super.cooking();
System.out.println("您点的肉菜"+getName()+"正在被备菜。");
}
public void printName(){
System.out.println("菜名"+getName());
}
}
调用:
public class test {
public static void main(String[] args) {
food fd=new meat();
fd.setName("烤肉");
fd.cooking();
meat mt=(meat) fd;
mt.printName();
}
}
二.继承
子类必须继承父类的构造方法,完成父类的初始化,当父类没有提供无参构造方法,必须用子类的构造方法中用super去完成对父类的初始化。
子类希望调用父类的某个方法要用super(参数)。
在访问子类对象时,如果访问的成员在子类中有,就优先访问子类中的;当子类中无,父类有,就访问继承来的;当子父类都有同名变量时优先访问子类本身的。
三.方法重写(覆盖) 方法重载
方法重写:
1.有继承关系的两个类之间
2.(访问修饰符大于等于父类)返回值类型,方法名,参数类型(个数,顺序)完全一样
功能:
1.保留父类原有的功能:掉用父类方法
2.新增加的功能
例:
父类:
public class food {
private String name;
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void cooking( ){
System.out.println(name+"正在被备菜。");
}
}
子类(方法重写):
public class vegetable extends food{
public void cooking( ) {
super.cooking();
System.out.println("您点的素菜"+getName()+"正在被备菜。");
}
}
方法重载:
1.方法重名
2.参数类型(个数,顺序)不一样
功能:
同一个方法,通过参数选择实现不同的功能
public class shape {
public int x1,y1,x,y,x2,y2,x3,y3;
public String name;
public shape (String name,int x1,int y1,int x,int y){
this.name=name;
this.x1=x1;
this.y1=y1;
this.x=x;
this.y=y;
}
public shape (String name,int x1,int y1,int x,int y, int x2,int y2){
this.name=name;
this.x1=x1;
this.y1=y1;
this.x=x;
this.y=y;
this.x2=x2;
this.y2=y2;
}
}