疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

Java面向对象的特征继承性


 

   

  * 一、面向对象的特征二:继承性

  * 1.为什么要设计继承性?

  *

  * 2.通过"class A extends B"类实现类的继承。

  * 子类:A 父类(或基类 SuperClass):B

  *

  * 3.子类继承父类以后,父类中声明的属性、方法,子类就可以获取到。

  * 明确:当父类中有私有的属性或方法时,子类同样可以获取得到,只是由于封装性的设计,使得子类不可以直接

  * 调用罢了。

  * 子类除了通过继承,获取父类的结构之外,还可以定义自己的特有的成分。

  *

  * extends:子类是对父类功能的“扩展”,明确子类不是父类的子集。

  *

  * 4.java中类的继承性只支持单继承:一个类只能继承一个父类。反之,一个父类可以有多个子类。

  * 5.子父类是相对的概念。

  

  * 二、方法的重写 ---(方法的重载) 修饰符 返回值类型 方法名 (参数列表){}

  * 1.前提:有子类继承父类

  * 2.子类继承父类以后,若父类的方法对子类不适用,那么子类可以对父类的方法重写(override overwrite)、覆盖、覆写。

  * 3.重写的规则: 1)要求子类方法的“返回值类型 方法名 (参数列表)”与父类的方法一样

  * 2)子类方法的修饰符不能小于父类方法的修饰符

  * 3)*若父类方法抛异常,那么子类方法抛的异常类型不能大于父类的。

  * 4)*子父类的方法必须同为static或同为非static的。

  1 public class TestExtends {

  2 public static void main(String[] args) {

  3 Student s = new Student();

  4 s.eat();

  5

  6 Worker w = new Worker();

  7 w.eat();

  8

  9 Person p = new Person();

  10 p.eat();

  11

  12 s.setAge(12);

  13 s.setName("麻华龙");

  14 System.out.println(s.getName() + ":" + s.getAge());

  15

  16 Graduate g = new Graduate();

  17 g.eat();

  18 g.info();

  19 g.show();

  20 }

  21 }

  22

  23 class Person {

  24 private String name;

  25 private int age;

  26

  27 public String getName() {

  28 return name;

  29 }

  30

  31 public void setName(String name) {

  32 this.name = name;

  33 }

  34

  35 public int getAge() {

  36 return age;

  37 }

  38

  39 public void setAge(int age) {

  40 this.age = age;

  41 }

  42

  43 public void eat() {

  44 System.out.println("吃饭");

  45 }

  46

  47 void walk() {

  48 System.out.println("走路");

  49 }

  50 private void sleep(){

  51

  52 }

  53 }

  54

  55 class A{

  56

  57 }

  58

  59 class Student extends Person{

  60 // class Student extends Person,A{

  61 // private String name;

  62 // private int age;

  63 private String schoolName;

  64

  65 public Student(){

  66

  67 }

  68 public Student(String name,int age){

  69 // this.name = name;

  70 // this.age = age;

  71 this.setName(name);

  72 this.setAge(age);

  73 }

  74

  75 // public String getName() {

  76 // return name;

  77 // }

  78 // public void setName(String name) {

  79 // this.name = name;

  80 // }

  81 // public int getAge() {

  82 // return age;

  83 // }

  84 // public void setAge(int age) {

  85 // this.age = age;

  86 // }

  87 //

  88 // 对父类同名的方法的重写、覆盖

  89 public void eat(){

  90 System.out.println("应该多吃有营养的");

  91 }

  92 public void walk(){

  93 System.out.println("背着书包蹦蹦跳跳的走路");

  94 }

  95 public void info(){

  96 eat();

  97 //System.out.println("name:" + name);

  98 System.out.println("我是一个学生");

  99 }

  100 //不是对父类私有的sleep()方法的重写。

  101 private int sleep(){

  102 return 0;

  103 }

  104

  105 }

  106

  107

  108

  109 class Worker extends Person{

  110 public void eat(){

  111 System.out.println("工人吃饭");

  112 }

  113

  114 public void walk(){

  115

  116 }

  117 }

  118

  119 class Graduate extends Student{

  120 public void show(){

  121 System.out.println("我是一个研究生");

  122 }

  123 }

  复制代码