面向对象三大特征:封装、继承、多态
继承:避免代码重复
没有继承就没有多态
一、什么是多态?写法?
二、代码示例
一个类的成员变量用private修饰,在本类的成员方法可以使用,比如get方法的return name;或者show方法的sout(name+","+age); 之后在测试类创建该类的对象时,也可以直接调用这些方法get/show/……,这样就可以访问被private修饰的成员变量
一个类的成员方法被定义之后,就可以在本类被其他成员变量调用。也可以直接在子类的成员变量中调用父类的非私有成员变量。
子类中的成员变量得是和父类不同的,所以子类的get/set方法是只子类中的成员变量即可,然后就是方法的重用@Override
子类没有写有参构造函数,就不能在创建对象语句时直接赋值,但是可以在创建对象时什么也不写,因为无参构造方法是就算子类不写,系统也会默认加上的
1.父类---------Person
package com.itheima.exe8;
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 show(){
System.out.println(name+","+age);
}
}
2.子类1-------Student
package com.itheima.exe8;
public class Student extends Person {
@Override
public void show(){
System.out.println("学生信息为"+super.getName()+","+super.getAge());
//也可以这样写:
//System.out.println("学生信息为"+getName()+","+getAge());
}
}
3.子类2-------Teacher
package com.itheima.exe8;
public class Teacher extends Person{
@Override
public void show(){
System.out.println("老师信息为"+getName()+","+getAge());
}
}
4.子类3-------Administrator
package com.itheima.exe8;
public class Administrator extends Person{
@Override
public void show(){
System.out.println("管理员的信息为"+super.getName()+","+super.getAge());
}
}
5.测试类----------Test
package com.itheima.exe8;
public class Test {
public static void main(String[] args) {
//先创建三个对象
//因为这三个子类都没有定义构造方法,所以不能直接赋值,要用set方法
Student s=new Student();
s.setName("张三");
s.setAge(18);
Administrator a=new Administrator();
a.setName("阿伟");
a.setAge(28);
Teacher t=new Teacher();
t.setName("老王");
t.setAge(40);
register(s);
register(t);
register(a);
}
public static void register(Person p){
p.show();
}
}