1、Michaelpublic void print()/与System.out.println(this.name);效果相同System.out.println(name);public class Demo01public static void main(String args)B b = new B();b.print();程序打印了在子类中定义的name属性:Michael如果要打印父类中的name属性,我们可以修改成super.name/如果要打印父类中的name属性,我们可以修改成super.nameSystem.out.println(super.name);父类中的name属性
2、输出了哈这就叫属性的复写属性一般情况下都要求被封装的,被封装之后肯定子类是无法看见父类中的内容,所以根本就无法覆写。 super与this调用构造方法能同时写在一个构造方法之中吗?答案是不行哈 Super调用构造方法时,一定要放在构造方法的首行,this调用构造方法时也必须放在首行,如果两个都放在首行,则肯定冲突。有人认为可以不调用super方法哈,我们看下面的Demo02public A()/里面有三个构造方法public B()this(abc,888);public B(String name)this();public B(String name,int age)this(name);
3、这样就产生了一个问题,我们在讲this关键字时也是提到过的哈在使用this()调用构造方法的时候肯定要留下一个出口。否则编译通不过哈/最好把this(修改成super()作为出口哈super();现在编译就通过了哈本季主要知识点:1、继承的类图表示 2、继承的题目现在我们来看个Demo03:这个滴继承关系我们来用类图表示知道了上面的内容,我们来看下练习题:class Personprivate String name;private String addr;private char sex;private int age;/一般参数少的构造方法写在上面哈public Person()publi
4、c Person(String name,String addr)this.setName(name);this.setAddr(addr);this.setSex(男);this.setAge(27);public Person(String name,String addr,char sex,int age)this.setSex(sex);this.setAge(age);public void setName(String name)this.name = name;public void setAddr(String addr)this.addr = addr;/M:表示男;F:表示
5、女public void setSex(char sex)this.sex = sex;public void setAge(int age)this.age = age;public String getName()return this.name;public String getAddr()return this.addr;public char getSex()return this.sex;public int getAge()return this.age;/所有的内容应该交给外部输出public String getInfo()return 姓名:+this.name+,地址:+
6、this.addr,性别:+(this.sex=M?男:女),年龄:+this.age;class Student extends Personprivate float math;private float english;public Student()/默认隐含了super();public Student(String name,String addr)super(name,addr);public Student(String name,String addr,char sex,int age,float math,float english)super(name,addr,sex,
7、age);this.setMath(math);this.setEnglish(english);public void setMath(float math)this.math = math;public void setEnglish(float english)this.english = english;public float getMath()return this.math;public float getEnglish()return this.english;return super.getInfo()+,数学成绩:+this.math+,英语成绩:+this.english
8、;public class Demo04/使用学生类Student stu = new Student(王乾,无锡,27,98.0f,99.0f);System.out.println(stu.getInfo();现在我们将其导入类图哈下面再来看一个练习题哈 Java中在声明数组长度的时候可以给一个变量,变量的内容可以在程序运行时自动决定。/声明数组类class Array/设置整型数组private int i = null;/设置一个脚标表示插入的点位置private int foot = 0;/在构造方法处写入数组的大小public Array(int len)this.i = new
9、intlen;/输入数据时必须保证数组里有空间接收此数据public boolean add(int temp)/先判断是否数组中已经加满了内容if (this.footthis.i.length)/表示数组里面依然有空间可以插入数据this.ithis.foot = temp;/修改脚标this.foot+;return true;elsereturn false;/理解为得到全部的数组内容public int getAll()return this.i;/定义排序的子类class SortArray extends Array/排序类是Array类的子类,所以此处必须传入一个大小publi
10、c SortArray(int len)super(len);/得到的是一个排序后的数组/最好复写getAll()方法/但是此方法返回的是一个排序好的数组/采用由低到高的方式排序for (int i=0;isuper.getAll().length ;i+ )for (int j=0;jsuper.getAll().length-1 ;j+ )if (super.getAll()i=0 ;i- )tempcou = super.getAll()i;cou+;return temp;public class Demo05SortArray sa = new SortArray(8);sa.add(15);sa.add(22);sa.add(07);sa.add(82);sa.add(75);sa.add(99);sa.add(27);sa.add(89);print(sa.getAll();System.out.println(n*排序类与反转类分割线哈*ReverseArray ra = new ReverseArray(8);ra.add(15);ra.add(22);ra.add(07);ra.add(82);ra.add(75);ra.add(99);ra.add(27);ra.add(89);