**1.方法重写概念: 子父类成员方法的特殊情况—-覆盖

子类中出现与父类一某一样的方法时,会出现覆盖操作,也称之为:override重写 复写或者覆盖.

通俗的说就是子类要使用父类中的功能,同时自己又有自己特有的功能.

重写需要注意的问题: 子类方法覆盖父类方法,必须要保证权限大于等于父类的权限. 权限有四种,最大的时public ,最小的时private.

2.方法重写和方法重载的比较:

方法重写: 子父类中,方法声明,方法名,参数列表和返回值类型,必须一某一样

方法重载:同一个类,方法声明,方法名一样,参数列表不一样,跟返回值无关

3.this与super

当子类创建对象后,该子类对象本身可以使用this代替,而该对象当中的父类对象空间,可以使用super来代替.

以person为类,创建一个人的父类,创建一个中国人子类,创建一个Test 作为测试,打印小明18岁来自科技研究院

public class Person {

private String name;
private int age;
public Person(){}
public Person(String name,int age) {
this.name = name;
this.age = age;
}

}

public class Chinese extends Person{

private String address;

public Chinese(){}

public Chinese(String name,int age,String address) {

super(name,age);

this.address = address;

}

}

public class Test{

Chinese c = new Chinese(“小明”,18,”中国科技研究院”);

}

4.this 与super调用普通成员与构造方法

调用普通成员:

this.成员变量 可以访问本类对象的成员变量

super.成员变量 可以访问父类对象的成员变量

this.成员方法() 可以访问本类对象的成员方法

super.成员方法() 可以访问父类对象的成员方法

调用构造方法:

this(其他参数) 可以访问本类其他的构造方法

super(其他参数) 可以访问父类其他的构造方法

构造方法:

无法继承,默认调用父类无参构造

super():表示访问父类无参构造方法

super(参数) :表示访问父类有参构造方法

举例: 用代码实现如下语句:使用继承的方法,不使用抽象:

工资为8000元的30岁的王小平正在吃饭

工资为8000元的30岁的王小平老师在讲课

成绩为90.0分的14岁的小王在吃学生餐

成绩为90.0分的14岁的小王学生在学习

1.定义一个Person类:

public class Person {

private String name;

private int age;

public Person(){}

public Person(String name,int age){

this.name = name ;

this.age = age;

}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void eat(){


System.out.println(age+"岁的"+name+"在吃饭");
}

}

2.定义一个Teacher类:

public class Teacher extends Person {

private int salary;

public void eat(){

System.out.println(“工资为”+salary+”元的”+getAge()+”岁的”+getName()+”正在吃饭”);

}

public void lecture(){

System.out.println(“工资为”+salary+”元的”+getAge()+”岁的”+getName()+”老师在讲课”);

}

public Teacher(){}

public Teacher(String name,int age,int salary){

super(name,age);
this.salary = salary;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}

}

3.创建一个学生类:

public class Student extends Person{

private double score;
public void eat(){

System.out.println("成绩为"+score+"分的"+getAge()+"岁的"+getName()+"在吃学生餐");
}

public void study(){


System.out.println("成绩为"+score+"分的"+getAge()+"岁的"+getName()+"学生在学习");


}
public Student(){}
public Student(String name ,int age,int score){
super(name,age);
this.score = score;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}

}

4.测试:

public class test01 {

public static void main(String[] args) {

Teacher t = new Teacher();

t.setName(“王小平”);

t.setAge(30);

t.setSalary(8000);

t.eat();

t.lecture();

Student s = new Student(“小王”,14,90);

s.eat();

s.study();

}

}**