Java4Android学习(第18~20集)继承

第18集 继承的初步.
1. J ava当中只支持单继承,不允许多继承.
 一个子类只能继承一个父类,  但在C++里面一个子类可以有多个父类.
class Person{  
    String name;  
    int age;  
      
    void eat(){  
        System.out.println("吃饭");  
        }  
          
    void introduce(){  
        System.out.println("我的名字是" + name + "年龄" + age);  
    }  
}  

class Student extends Person{   //用extends来继承,Person是父类,Student是子类
    int grade;  
      
    void study(){  
        System.out.println("学习");  
          
    }  
}  

class TestStu{  
    public static void main(String args[])  
    {  
        Student student = new Student();  
        student.name = " 张三 ";  
        student.age  = 15;            
        student.grade = 3;  
          
        student.eat();  
        student.introduce();  
        student.study();  
    }  
}  

第19集 子类实例化过程.

 本集主要内容.
  1.生成子类的过程.
  2.使用super调用父类构造函数的方法.

class Person{  
    String name;  
    int age;  
    Person(){  
              
        System.out.println("Person的无参数构造函数");  
    }  
    Person(String name,int age){  
        this.name = name;  
        this.age =age;  
        System.out.println("Person的有参数构造函数");  
    }  
    void eat(){  
        System.out.println("吃饭");  
        }  
}  

class Student extends Person{  
    int grade;  
    //在子类的构造函数当中,必须调用父类的构造函数,为什么?  
    Student(){  
        super(); //调用父类的构造函数,如果用户没有写,编译器会自动添加.,在函数的第一条语句.  
        System.out.println("Student 无参数构造函数");        
    }  
      
    Student(String name,int age,int grade){  
        //this.name = name;  
        //this.age =age;  
        super(name,age);//调用父类的构造函数  
        this.grade =grade;  
    }  
}  

class Test{  
    public  static void main(String args[]){  
        Student student  = new Student("zhangsan",18,3);  
        System.out.println(student.name);  
        System.out.println(student.age);  
        System.out.println(student.grade);  
    }  
}  
由于子类继承了父类的成员变量,却无法继承父类的构造函数
  所以,在为成员变量赋值的时候有可能会出现重复代码,
  为了解决这个问题,子类可以使用super调用父类的构造函数,

第20集 函数的复写.
 本集主要内容.
  1.函数的复写(override).
  2.使用super调用父类的成员函数.

class Person20{  
    String name;  
    int age;  
      
    void introduce(){  
        System.out.println("我的名字"+ name+"年龄"+age);  
    }  
}  

//复写(override)也称之为覆盖或者重写  
//1.在具有父子关系的两个类当中.  
//2.父类和子类各有一个函数,这两个函数的定义(返回值 ,函数名和参数列表)完全相同  
  
class Student20 extends Person20{  
    String address;  
      
    void introduce(){  
        //anotherFun();  
        super.introduce();           //调用父类的成员函数,减少重复代码,  
        //System.out.println("我的姓名是"+name+"我的年龄是"+age);  
        System.out.println("我的家在"+address);  
    }  
}  

class Test20{  
    public static void main(String args[]){  
        Student20 s = new Student20();  
        s.name = "张三";  
        s.age  = 20;  
        s.address = "深圳";     
        s.introduce();  
          
        Person20 p = new Person20();  
                  
        //p.name = "李四";  
        //p.age = 30;  
        //p.introduce();      //调用的是父类的introduce.不会打印 address.
        //p.address = "广州";  
    }  
}  
一次把目录下的文件全部编译: > javac  *.java
复写与重载是不同的.
  复写在两个类中,在父类与子类中;  重载在一个类中.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值