学Java第三十天------------多态

面向对象三大特征:封装、继承、多态

继承:避免代码重复

没有继承就没有多态

一、什么是多态?写法?

二、代码示例

         一个类的成员变量用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();
    }
}

三、总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值