3.3 继承中成员方法的关系
package cn.hncu_08;
/*
* 继承中成员方法的关系:就近原则
*
* 方法重载:方法的方法名相同,方法的参数不同.
* 方法重写:子类中出现了和父类中方法申明一样的方法.
*
* 方法重写的应用:
* 子类继承父类的功能,但是又具有自己独特的功能时,就要方法重写.
*
* 方法重写的注意事项
* 父类中私有方法不能被重写. 私有方法不能被继承,不存在重写的说法
* 子类重写父类方法时,访问权限不能更低. 子类重写方法的权限一般与父类方法相同.
* 父类静态方法,子类也必须通过静态方法进行重写。
*
* 方法重写和方法重载的区别?方法重载能改变返回值类型吗?
* Overload:方法重载
* 方法的方法名相同,方法的参数不同.
* Override:方法重写
* 子类中出现了和父类中方法申明一样的方法.
* 方法重载能改变返回值类型.
*/
class Father {
public void method(){
System.out.println("Father method");
}
}
class Son extends Father{
//方法重写
public void method(){
System.out.println("Son method");
}
public void fun(){
method();
}
}
public class Demo {
public static void main(String[] args) {
Son son = new Son();
son.fun();
}
}
4. final关键字
package cn.hncu_09;
/*
* final关键字是最终的意思,可以修饰类,成员变量,成员方法。
* 修饰类,类不能被继承
* 修饰变量,变量就变成了常量,只能被赋值一次
* 修饰方法,方法不能被重写
*/
final class Father {
public void method(){
final int number = 10;
//number = 20;
}
}
/* class Son extends Father{
}*/
public class Demo {
}
练习:
package cn.hncu_10;
/*
* 老师学生案例,继承版
*
* 老师和学生都应该继承自人类
*/
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("吃饭");
}
public void sleep(){
System.out.println("人都要睡觉");
}
}
class Student extends Person{
//成员变量
private String name;
private int age;
private String sex;
//构造方法
public Student() {
}
public Student(String name, int age) {
//super(name, age);
this.name = name;
this.age = age;
}
public Student(String name, int age, String sex) {
super();
this.name = name;
this.age = age;
this.sex = sex;
}
//成员方法
//方法重写
public void eat(){
System.out.println("学生吃饭");
}
public void study(){
System.out.println("好好学习");
}
}
class Teacher{
//成员变量
private String name;
private int age;
//构造方法
public Teacher() {
super();
// TODO Auto-generated constructor stub
}
public Teacher(String name, int age) {
super();
this.name = name;
this.age = age;
}
//成员方法
public void eat(){
System.out.println("老师能吃幸福午餐");
}
}
public class Demo {
public static void main(String[] args) {
Student s1 = new Student();
s1.setName("生活委员");
s1.setAge(19);
System.out.println(s1.getName()+ "---" + s1.getAge());
s1.eat();
s1.study();
//-----------测试老师类,自己完成
}
}