继承与重写

继承

编写程序,实现继承,并调用父类方法。
题目 1
1 )请按照以下要求设计类。
要求如下:
1 )设计 Animal 类。类中定义一个成员变量 animalName ,表示动物的名称,变量
animalName String 类型,默认初始值。在该类中再定义一个成员方法 shout() ,表示动物
发出叫声的行为,该方法能输出名称为 animalName 的动物发出叫声,例如输出“波斯猫发
出叫声”。
2 )设计 Cat 类。使用关键字 extends 继承 Animal 类。 Cat 类中定义一个 public 类型的
构造方法,该构造方法拥有一个 String 类型的参数 catName ,通过该参数,为 Cat 类中继承
Animal 类的 animalName 成员变量赋值。
3 )设计一个测试类。类名为 ExtendsTest ,在 main 方法中定义一个 String 类型的 name
变量,并为它赋值为“波斯猫”,然后使用有参构造创建 Cat 类的对象,并使用对象的引用
变量调用 shout() 方法。
Aniaml类
public class Animal {
    String animalName;
    public void shout(){
        System.out.println(animalName+"发出叫声");
    }
}

Cat类

public class Cat extends Animal{
    public Cat (String catName){
        this.animalName = catName;//将catName的值传到animalName
    }
}

ExtendsTest类

public class ExtendsText {
    public static void main(String[] args) {
        String name = "波斯猫";//将变量赋值给name
        Cat cat = new Cat(name);//传参到Cat中的catName
        cat.shout();//调用shout方法
      }
}

运行结果:

重写

设计父类和一个子类,在子类里面通过 super 关键字去调用父类的成员变量和成
员方法,在子类的构造方法中使用 super 关键字调用父类的构造方法,在测试类里进行验证。
父类
public class Father {
    int a = 10;

    void A() {
        System.out.println("我是父类Father的成员方法A");

    }
}

    class Son extends Father {
        int a = 20;

        void A() {
            int a = 20;
            super.A();//在子类中的A方法已经被重写, 用关键字super调用在父类中未被重写的A方法
            System.out.println("我是子类Son的成员方法A");
            System.out.println("父类a:" + super.a);
        }
    }

子类

public class Text {
    public static void main(String[] args) {
        Son son = new Son();
        son.A();
        System.out.println("子类a:"+son.a);
    }
}

运行结果:

题目

尽量少写相同的代码编写程序描述类层次,其中 Person 为父类,其属性包括姓 名,性别,出生日期等,方法为 printInfo()打印信息。教师 Tercher 还包括学校和工号属性; 学生 Student 还包括学校、学号、专业、年级和班级等属性;编写一个测试类 TestPerson, 在 main 方法中创建 1 名教师和一名学生对象,输出其属性信息。

三个类

public class Person {
    static String name;
    String sex;
    String date;

    void printlnfo() {
        System.out.println("姓名:" + name);
        System.out.println("性别:" + sex);
        System.out.println("出生日期:" + date);
    }

    public Person(String name, String sex, String date) {
        this.name = name;
        this.sex = sex;
        this.date = date;

    }

    public Person() {
    }
}

class Teacher extends Person {
    String CoName;
    int JobNumber;

    void Teacher() {
        System.out.println("学校名字:" + CoName);
        System.out.println("工号:" + JobNumber);
    }

    public Teacher(String CoName, int JobNumber) {
        this.JobNumber = JobNumber;
        this.CoName = CoName;
    }
}

class Student extends Person {
    String CoName;
    int StudentId;
    String major;
    int grade;
    int class0;

    public Student(String CoName, int StudentId, String major, int grade, int class0) {
        this.CoName = CoName;
        this.StudentId = StudentId;
        this.major = major;
        this.grade = grade;
        this.class0 = class0;
    }

    @Override
    void printlnfo() {
        super.printlnfo();
        System.out.println("学校名字:" + CoName);
        System.out.println("学号:" + StudentId);
        System.out.println("专业:" + major);
        System.out.println("年级:" + grade);
        System.out.println("班级:" + class0);
    }
}

TestPerson

public class TestPerson {
    public static void main(String[] args) {
        Teacher teacher = new Teacher("成都工业学院", 2134);
        teacher.name = "张三";
        teacher.sex = "男";
        teacher.date = "1976-12-9";
        teacher.printlnfo();
        teacher.Teacher();
        System.out.println("======================================");
        Student student = new Student("成都工业学院", 111, "软件工程", 1, 3);
        Student.name = "小一";
        student.sex = "女";
        student.date = "2003-1-1";
        student.printlnfo();
    }
}

运行结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值