目录
What ? and How继承
继承的作用
继承的注意点
what?and How?继承
不同于封装特性,继承不仅仅只是一种思想,指导我们设计代码的思想。更是一种关系,两个类之间的关系,父类和子类之间的关系。其实很好理解,就像在我们人类世界中,父亲和儿子的关系,几个儿子会继承父亲的家业。可是父亲不会继承儿子们的家业,这是一种单向的继承,一对多的继承。但是在Java代码中又怎么具体的理解和实现呢?
不同于封装特性,继承不仅仅只是一种思想,指导我们设计代码的思想。更是一种关系,两个类之间的关系,父类和子类之间的关系。其实很好理解,就像在我们人类世界中,父亲和儿子的关系,几个儿子会继承父亲的家业。可是父亲不会继承儿子们的家业,这是一种单向的继承,一对多的继承。但是在Java代码中又怎么具体的理解和实现呢?
面向对象中我们会涉及比较多的类,那么这些类有可能会有共同的属性,甚至共同的行为。这个时候我们就可以把这个公有的属性行为抽离来,集中放到一个类(父类)。其他的类调用(继承)这个类也可以拥有这些属性了。
比如:老师类,学生类(共有年龄,姓名,学校这些属性。吃饭,睡觉,学习这些行为)
把这些共有的放到一个类中。老师,学生类只要继承也可以拥有这些属性行为。
继承语法:
通过关键字extends实现
public class fu{
}//父类
public class zi extends fu{}//子类在父类的基础上扩展
父类代码:
父类:属性:年龄,姓名,学校。行为:吃饭。
public class Excel{
int age;
String name;
String school;
public void eat(){
System.out.println("吃饭");
}
子类代码:
不仅有父类的所有的属性和方法,同时扩展了:薪水属性和教学方法。
public class zilei extends Excel{
int id;
int salary;
public void teacher(){
System.out.println("我是子类,扩展的方法是教学方法");
}
}
子类这样就拥有父类的所有属性和方法,也扩展自己。当父类的方法不满足要求时,可以通过方法重写,把父类的方法逻辑重写。
注意方法重写时:方法声明是要一样的即( 修饰符 返回值类型 方法名(参数列表))都要一样,只有方法体不同
继承的作用
1.增加代码的复用
2.减少重复的代码
3.同时也方便我们扩展
继承的注意点:
1.当父类的属性私有化时,子类实例化对象之后可以通过get获取属性值。不然不可用
2.父类和子类都存在构造方法,实例化子类对象调用子类的成员方法。会先调用父类的构造方法----》子类的构造方法-------》子类的成员方法。
原因:子类继承父类,当调用子类时,需要先加载父类,之后再是子类
1.增加代码的复用
2.减少重复的代码
3.同时也方便我们扩展
1.当父类的属性私有化时,子类实例化对象之后可以通过get获取属性值。不然不可用
2.父类和子类都存在构造方法,实例化子类对象调用子类的成员方法。会先调用父类的构造方法----》子类的构造方法-------》子类的成员方法。
原因:子类继承父类,当调用子类时,需要先加载父类,之后再是子类
代码:
package com.company.day16;
public class jicheng2 {
public jicheng2(){
System.out.println("这是父类的构造方法");
}
public void show(){
System.out.println("父类的成员方法");
}
}
class ji extends jicheng2{
public ji(){
System.out.println("这是子类的构造方法");
}
public void showtime(){
System.out.println("这是子类的成员方法");
}
}
测试:
package com.company.day16;
public class Test2 {
public static void main(String[] args) {
//实例化对象
// ji jii=new ji();//在继承中继承创建对象同时会调用构造方法
jicheng2 jicheng22=new jicheng2();
//子类调用子类的成员方法
// jii.showtime();
//子类调用父类的成员方法
// jii.show();
//父类调用父类的成员方法
jicheng22.show();
}
}



