http://bbs.itheima.com/thread-3077-1-1.html
Android 培训-----我的java笔记,期待与您的交流; [size=10.5000pt](一)继承: 继承: 面向对象分析: 学生类: IOS的学员 安卓的学员 Java基础的学员 JavaEE的学员 教师类: IOS的教师 安卓的教师 ..... 面向对象设计: class Student{ String name; int age; char sex; String stuNo;//学员编号 } class Teacher{ String name; int age; char sex; String teaNo;//教师编号 } class Employee{ String name; int age; char sex; String empNo;//员工编号 } 我们发现这三个类同属于学校的人员,而且,都有一些相同的成员属性,这时我们可以将这些相同的成员属性进步一抽取;形成一个父类,目的:可以重用这三个重复的成员; 继承使用关键字:extends 即: class Person { String name; int age; char sex; } class Student extends Person{ String stuNo;//学员编号 } class Teacher extends Person{ String teaNo;//教师编号 } class Employee extends Person{ String empNo;//员工编号 } (二)Java继承的特点: 1.一个类,同时只能继承自一个类;即父类只能有一个,而子类可以有多个; 2.但是,允许多级继承; 3.子类只能继承父类非私有的成员(成员属性、成员方法);如果父类提供了get和set方法 时,子类可以继承父类的get和set方法,间接访问; 4.父类的构造方法不能被继承; 5.不要为了部分功能而去继承 6.当子类和父类是一个:is a(是一个) 的关系时 7.成员变量的读取顺序 : 局部成员 n -----》子类的成员 this.n--------》父类的成员super.n; 8.方法重写时的注意事项: 1.父类中私有的方法不能被重写; 2.子类重写父类的方法时,访问修饰符一定跟父类的访问修饰符相同或比父类更宽; private(私有) , 默认(不指定),protected(受保护的),public(公有的) 3.父类静态方法,子类也必须通过静态方法进行重写。 (三)this和super关键字: 一.成员变量: this.成员变量:本对象的成员变量 super.成员变量:父类对象的成员变量 二.构造方法: this():调用其它的构造方法; 语法格式: 1).this([参数列表]); 2).this()一定要放在这个构造方法的第一句话; super():调用父类的构造方法: 语法格式: 1).super([参数列表]); 2).super()一定要放在这个构造方法的第一句话; super()调用父类构造函数,一般情况下,由系统自动添加,但如果父类没有默认构造函数,那么,子类中必须显示的使用super()去调用父类带参数的构造函数。以保证JVM能正常的实例化父类对象。在同一个构造器中,super()和this()不能同时存在; 三.成员方法: this.成员方法():本类的成员方法; super.成员方法():父类的成员方法; class A { //注意:此类没有默认构造函数 A(int a){ System.out.println("A()"); } } class B extends A { //此默认构造方法为了演示在B(int a)构造方法中使用this() B(){ //为了保证正确的调用父类构造函数,这里使用了10 super(10); } B(int a){ super(a); // this();在同一个构造器中,super()和this()不能同时存在; System.out.println("B()"); } } class Student { String schoolName; String name; int age; Student(){ schoolName = "好程序班--北京校区"; } Student(String name,int age){ //在这个构造方法中可以调用其它构造方法 this();//语法 this.name = name; this.age = age; } void printMe(){ System.out.println("schoolName = " + schoolName + ", name = " + name + ", age = " + age); } } class Demo { public static void main(String[] args) { /* Student stu = new Student(); stu.printMe(); Student stu2 = new Student("章子怡",18); stu2.printMe(); */ B b = new B(10); } }
|