继承
继承的概念
继承中有分为父类以及子类,子类通常为父类的分类,例如将球类作为父类,那么子类可以为篮球足球等等。子类能继承得到父类的所有属性,以及方法。
用法
属性
子类无法修改父类所继承来的属性,但是可以增加自带的属性,还是以球类和篮球为例,如果定义球类是圆的属性,那么其子类必定为圆的,同时还可以增加其特有的属性,例如说空心的属性。
public class Ball {
String shape = "我是圆的。";//定义父类球的属性。
}
public class Basketball extends Ball{
String k = "我是空心的";//定义子类篮球的属性。
}
以上是我们定义的子类和父类。
public static void main(String[] args) {
Basketball basketball = new Basketball();//创建一个篮球类的对象
System.out.println(basketball.shape+basketball.k);//输出篮球的继承属性以及其特有的属性。
}
当我们打印出篮球的对象属性时,我们在篮球类中没有添加的shape属性被打印了出来,这就是属性的继承,同时还可以添加其父类没有的属性例如代码中的k属性。
方法
在继承中方法一样是可以被继承的,但是它和属性不同在继承的同时也允许子类对父类的方法进行改写,还是一之前的球与篮球为例:
public class Ball {
public void game(){
System.out.println("我是一种运动");//定义父类方法game
}
public void game2(){
System.out.println("我的运动方式是滚动");//定义父类方法game2
}
}
public class Basketball extends Ball{
public void game2(){
System.out.println("我的运动方式主要依靠传递");//重写父类game2方法
}
}
以上我们定义了父类的方法,并且在子类中进行了改写。
public static void main(String[] args) {
Basketball basketball = new Basketball();//创建一个子类对象
basketball.game2();
basketball.game();
}
运行主函数后我们会发现game运行的是父类继承给子类的方法,而game2是子类重写后的方法。
自动转型
public static void main(String[] args) {
Ball basketball = new Basketball();//创建对象
basketball.game2();
basketball.game();
}
这个创建对象大家可能会有些奇怪,前面用的是父类的类名,而后面用的则是子类的类名,那么所生成的对象到底是父类的对象还是子类的对象呢?答案是子类的,这便是自动转型,在创建对象时刻可以根据之后的子类对象来转变成子类对象。
重载
重载是指在一个类中有多个名字相同,参数不同的多个方法。
public class Ball {
public void game(int a){
System.out.println("我是一种运动");//定义方法game
}
public void game(String b){
System.out.println("我的运动方式是滚动");//定义方法game
}
}
以上game的方法名字相同但是由于参数,就是重载,因为参数的不同在使用时传入的参数不同就将决定所选择的同名的方法。
权限
今天还讲到一个问题是关于权限的,权限修饰词分为:public,protected,缺省(包权限),private。而权限所对应的范围也有4种:当前类,同一个包下的类,不同包下的子类,不同包下的非子类。
·················当前类···同一个包下的类···不同包下的子类···不同包下的非子类
public···········OK·············OK··················· OK ·······················OK
protected······OK·············OK··················· OK
缺省············OK·············OK···················
private·········OK