面向对象四大特性:封装、继承、多态、抽象。 今天介绍继承。 继承是面向对象的核心特性,能够最大限度地实现代码复用。 1、 由继承派生类 继承允许在已有类的基础上创建新类。 创建的新类叫做子类(或派生类),已有类称为父类(或祖先类)。 子类将自动拥有父类的全部成员。 使用关键字extends表示继承。其语法格式如下: 【修饰符】 class 类【extends 父类】 Java中的类是单继承的,一个类只能继承一个父类。 例:Person类为人类,Student类为学生类,很明显,学生类是可以继承人类的,因为学生首先是一个人。 //Person类 class Person{ private String name;//姓名 public Person(){ name="张熹熹"; } public String getName(){ returnname; } } //Student类 publicclass Student extends Person{ privateintnumber;//学号 public Student(){ number=123; } publicvoid show(){ System.out.println("姓名:"+getName()+"\n学号:"+ number); } publicstaticvoid main(String args[]){ Student s=new Student(); s.show(); } } 其运行结果如下: 姓名:张熹熹 学号:123 从本例可以发现,Student类在声明对象s时,是会同时为对象s的姓名和学生赋值的,而对象s在调用show()方法时,也是可以显示s的姓名的。因为在定义类时用了Student extends Person一行,表示将Person中的所有成员继承至Student类中。 2、 继承原则 (1) 子类继承父类所有的成员变量,包括实例成员和静态成员; (2) 构造方法和析构方法不被继承; (3) 子类可以增加成员,可以重定义从父类继承来的成员,但不能删除它们。 3、 子类对父类成员的访问权限 子类对父类继承来的成员并不都有访问权限,现说明如下。 (1) 子类不能访问父类的私有成员 (2) 子类能够访问父类的公有成员和保护成员 (3) 子类对父类的缺省权限成员的访问控制,分为两种情况:当父类在当前包中,可以访问父类的缺省权限成员;当父类不在当前包中,则不能访问父类的缺省权限成员。 4、 简单例题 声明midStudent类,继承Student类。 其完整代码如下: //人类 class Person{ protected String name;//姓名 public Person(){ name="张熹熹"; } public Person(Stringname){ this.name=name; } } //学生类,继承自人类 class Student extends Person{ privateintnumber;//学号 public Student(){ number=123; } publicvoid show(){ System.out.println("姓名:"+name+"\n学号:"+ number); } } //中学生类,继承自学生类 publicclass midStudent extends Student{ private String grade,school,banji;//年级、学校、班级 private String teacher;//班主任 public midStudent(){ grade="一年级"; school="一中"; banji="一班"; teacher="张老师"; } public midStudent(String grade, String school, Stringbanji,String teacher){ this.grade=grade; this.school=school; this.banji=banji; this.teacher=teacher; } publicvoid display(){ super.show();//用super访问父类中的方法 System.out.println("学校:"+school+"\n年级:"+grade+"\n班级:"+banji+"\n班主任:"+teacher); } publicstaticvoid main(String args[]){ midStudent mid=new midStudent(); mid.display(); } } 其运行结果如下: 姓名:张熹熹 学号:123 学校:一中 年级:一年级 班级:一班 班主任:张老师 |
|
来自: pythonjava学习 > 《待分类》