继承1

继承
   1.继承的概念和应用:
       a.生活中的概念:如儿子从父亲继承得到的东西;
       b.程序的概念:子类继承父类的方法和属性;
       c.继承父类的关键字:extends
          举例:
        public class UnStudent extends Student{

private String school;

public void study(){
System.out.println("大学生在学习 ");
}

public String getSchool() {
return school;
}

public void setSchool(String school) {
this.school = school;
}

}

       d.子类从父类中继承到的东西?  父类非私有的属性和方法;
       e.范围及方法和属性的比较:     父类的范围要更大,但父类的方法和属性所组成的集合与         子类的集合相交;
   2.方法重写:
       a.修饰符的范围:从大到小;
       public String name;//同一个工程下面的所有类
       protected String school;//同一个包下的所有类
       String sex;//存在继承关系的类
       private int age;//当前的类


       b.特典:子类方法必须和父类的方法除了方法体和访问权限以外的内容必须完全相同
                 子类的访问权限不能缩小,只能不变或者扩大


       c.code:
        public class Student {
/**
* 属性
*/
public String name;//同一个工程下面的所有类
protected String school;//同一个包下的所有类
String sex;//存在继承关系的类
private int age;//当前的类
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
public String getName() {
return name;
}
public void setName(String name){
this.name = name;
}
/**
* 方法,学生能做的事情
*/
public void study(){
System.out.println(age+"岁的学生"+name+"在"+school+"学习");
}
public void eat(){
System.out.println("学生在吃饭");
}
}
       
        //子类
        public class UnStudent extends Student{
// public void study(){}
// private int pass;
//大学生玩游戏方法
// public void game(){
// System.out.println("大学生在玩游戏");
// }
public void setName(String n){
name = n;
}
/**
* 重写父类的学习方法
*/
public void study(){
System.out.println(this.getAge()+"岁的大学生"+this.getName()+"在"+this.getSchool()+"学习");
}
}
        解析:子类的study()重写父类的study(),子类的返回类型要和父类的返回类型一致,若修饰符不同则必须是从小到大(即子类的修饰符的作用范围要                大于或等于父类);

    3.自动转型:
        Student stu = new UnStudent();//UnStudent是Student的子类;
        子类将自动转换为父类,但将沿用子类中重载父类的学习方法,但不能调用子类的特有的        学习方法;

    4.多态的理解
        概念:同一个类型的对象调用同一个方法的时候执行不同的内容;
        Student stu = new UnStudent();
Student stu1 = new Student();
        stu.study();
        stu1.study();
        这两个学习方法虽然同属一个类的学习方法,但由于第一类是由他的子类的学习方法中重写过来的,从而导致stu的study()的方法体可能会有所改变;
       
     

   
     
  
      
    

猜你喜欢

转载自allagain.iteye.com/blog/1703922