Java day3

class Person
{

    private int age;
    public Person()
    {}
    public Person(int age)
    {
        this.age=age;
    }
    public void SetAge(int age)
    {
        this.age=age;
    }

    public int GetAge()
    {
        return age;
    }

}
//JAVA用关键字extends作为继承
//格式
//class 父类{}
//class 子类 extends 父类{}
//实例化子类对象的时候,会先调用父类的构造方法,再调用父类的构造方法
//如果一个类没有构造方法,java编译器会给它定义一个空的构造方法。比如说
//Person里面没有实现构造方法,那你编译它的时候有这么一个空白的构造方法
//编译器会帮你自动的加上 public Person(){};这么一句话。
//我子类构造方法调用之前,会自动的父类的构造函数。假设我们父类有很多个构造函数,那你子类构造的时候调用哪一个呢,它就默认调用父类的super();这个构造函数,
//这个表示没有参数的父类的构造函数。你写不写,他都是这样的。你如果不想调用无参数的构造函数,想调用有参数的构造函数,就用super(5)这样就可以了,super(参数)这种方法就可以了。但是值得注意的就是要么你都不写,要么你就自己写出一个空的构造函数,如果你写了其他的构造函数的话,系统就不会默认给你补一个构造函数了。
class Student extends Person
{
    String School;
    Student(String School)
    {
        super(5);
        this.School=School;
    }
    String GetSchool()
    {
        return School;
    }
}

public class Inherit
{
    public static void main(String args[])
    {
        Student stu=new Student("mtk");
        //stu.SetAge(24);
        stu.GetSchool();
        System.out.println(stu.GetAge());
        System.out.println(stu.GetSchool());
    }
}

//final关键字:fina类不能有子类
//            final方法不能被覆写
//            final变量变成常量,不能被修改
//


//继承的限制:父传子
//            1。一个父类的一个属性如果是私有的话,那它的子类就无法直接访问                  这个父类的属性。它的父类可能会实现一个方法让你这个子类通过
//               这个方法去访问这个私有属性。
//            2.父类如果它的某个方法定义成私有方法,这个子类也是无法去调用这                个方法的。
//            3.子类不能私吞父类的方法,就是你子类继承了父类的方法,你还可以                往下传
//

 

 

interface A{
    public static int i=10;
    public abstract int getNum();
}

interface B{
    public static String name="InterfaceB";
    public abstract String getName();
}

abstract class Father
{
    //抽象类的作用是作为模板,指定你这个继承者必须实现某些方法
    //对抽象类来说不能实例化对象,比如说在这个例子里面
    //你如果 Father f=new Father();就会出错
    public abstract void study();
}

class Son implements A,B
{
    public int getNum()
    {
        return i;
    }

    public String getName()
    {
        return name;
    }
}

class Daughter extends Father
{
    public void study()
    {
        System.out.println("I am sleep");
    }

    public void sleep()
    {
        System.out.println("I am sleep too");
    }
}

public class Abstract
{
    public static void main(String args[])
    {
        Son fa=new Son();
        System.out.println(fa.getNum());
        System.out.println(fa.getName());
        Father fb=new Daughter();
        fb.study();
    }
}

 

 

class Father
{
    private int money;
    public int GetMoney()
    {
        return money;
    }

    public void SetMoney(int money)
    {
        this.money=money;
    }

    public void printInfo()
    {
        System.out.println("This is father");
    }
}

class Son extends Father
{
    public void printInfo()
    {
        System.out.println("This is Son");
    }

    public void playGame()
    {
        System.out.println("son play game");
    }
}

class Daughter extends Father
{
    public void printInfo()
    {
        System.out.println("This is daughter");
    }

    public void playGuitar()
    {
        System.out.println("play Guitar");
    }
}

public class Abstract
{
    public static void main(String args[])
    {
        Father son=new Son();
        printInfo(son);

        Father daughter=new Daughter();
        printInfo(daughter);
    }

    public static void printInfo(Father f)
    {
        if(f instanceof Son)
        {
            Son s=(Son)f;
            s.playGame();
        }
        else
        {
            Daughter d=(Daughter)f;
            d.playGuitar();
        }    
        f.printInfo();
    }

    //instanceof:用来判断一个对象是不是某个类的实例
}


 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值