一个简单的java面向对象实例


首先定义了一个接口outline:

package mypackage;

public interface Outline {
    public void task();
}

定义一个Person父类:

package mypackage;

public abstract class Person {
    public String name;// 外部类都可访问
    protected int age; //子类包可访问,其他类不可访问

    public Person(){      //抽象类的构造函数,在生成子类对象时,被子类默认调用
        System.out.println("Person的无参构造函数!");
    }

    public Person(String name,int age){
        this.name=name;
        this.age=age;
    }
    public void IDcard(){
        System.out.println("Name: "+name+";  " +"Age: "+age);
    }

    public static void eat(){
        System.out.println("进食!");
    }
    public abstract void work();
}

定义一个Student类和一个Teacher类,并且这个Teacher类还实现了Outline接口

package mypackage;

public class  Student extends Person{
    public String snum;   //默认值为 null
    //子类的构造函数,必须调用父类的构造函数,形式为: super(); 编译器可提供
    Student(){
        super();//生成子类对象时,默认调用父类构造函数
        System.out.println("Student的无参构造函数");
    }

    Student(String name,int age,String snum){  //构造函数重载
        super(name,age); // 调用父类方法
        this.snum=snum;
    }

    public void IDcard(){  //重写父类此方法
        //super.IDcard();
        System.out.println("Name: "+name+";  "+"Age: "+age+";  "+"Snum: "+snum);
    }

    public void work(){
        System.out.println("好好学习!");
    }
}

package teacherpackage;
import mypackage.*;

public class Teacher extends Person implements Outline {
    private  double wage;

    public double getwage(){
        return wage;
    }

    public void setwage(double wage){
        this.wage=wage;
    }

    public Teacher(String name,int age){  //构造函数重载
        super(name,age); // 调用父类方法
    }
    public void work(){
        System.out.println("好好育人!");
    }

    public void task(){ //继承并实现接口
        System.out.println("勤勤恳恳的工作!");
    }

}

最后是一个Test测试类:

package mypackage;
import  teacherpackage.Teacher;

public class Test {
    public static void main(String[] args){

        Student SNo1=new Student("JLei",25,"001");
        //Person  PNo1=new Person("GOD",0);
        SNo1.IDcard();
        //PNo1.IDcard();
        Student SNo2=new Student();
        Person PNo2=SNo2;  //向上转型:将子类对象赋值给父类引用

        //一个引用能够调用哪些变量和函数,取决于这个引用的类型
        PNo2.name="XiaoHong";
        PNo2.age=20;
        //一个引用调用某个具体方法(继承中可能出现子类复写父类方法),取决于它指向的对象
        PNo2.IDcard();// 这里调用了子类的方法

        //向下转型:将父类对象赋值给子类引用   是面向对象多态性的体现
        Person PNo3=new Student(); //先必须向上转型
        Student SNo3=(Student)PNo3;
        SNo3.IDcard();

        System.out.println("\n");
        Teacher TNo1=new Teacher("王老师",40);
        TNo1.IDcard();
        TNo1.work();
        TNo1.eat();
        TNo1.task();
    }
}








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值