Demo10_Object方法+多态02

package test02;

import java.time.Instant;

public class Demo10_DuoTai02 {
public static void main(String[] args) {
// bilaoye x = new bilaoshi();
// x.jiangke();
// x.kandianying();
// if(x instanceof bilaoshi)
// {
// bilaoshi y = (bilaoshi)x;
// y.kandianying();
// }
// notebook book = new notebook();
// book.run();
// book.useUSB(null);
// book.useUSB(new Mouse());

// Fu f = new Zi();//f(fu类型)所属的类型num
// System.out.println(f.num);
// f.show();
// Zi z = new Zi();//z(fu类型)所属的类型num
// System.err.println(z.num);

    Person234 p1 = new Person234(12);
    Person234 p2 = new Person234(14);

// System.out.println(p1.equals(p2));
System.out.println(p1.toString());
System.out.println(p2);
}
}
//练习
//阶段一 笔记本行为:运行
//class notebook
//{
// //运行功能
// public void run()
// {
// System.out.println(“A”);
// }
//}
//阶段二 添加一个鼠标对象 行为:开启关闭
//class Mouse
//{
// public void open()
// {
// System.err.println(“B”);
// }
// public void close()
// {
// System.err.println(“C”);
// }
//}
//笔记本怎么使用鼠标
//在笔记本中添加使用鼠标的功能
//class notebook
//{
// //运行功能
// public void run()
// {
// System.out.println(“A”);
// }
// public void usemouse(Mouse m)
// {
// if(m!=null)
// {
// m.open();
// m.close();
// }
// }
//}
//加入一个使用键盘的功能
/*
* 一旦需要添加新设备就需要改变电脑编码扩展性差
* 之前的问题在于设备的添加和笔记本电脑之间的耦合性过高
* 我们需要 让笔记本在使用这些功能之前可以事先定义好一些规则笔记本只要调用这些功能即可
* 有了这些功能就可以进行笔记本电脑功能的扩展
* 后期这些外围设备只要符合这些规则就可以被笔记本使用了
*
* 规则在Java中如何体现 接口
*
*
* 1.描述接口 USB
* 2.描述笔记本:运行功能 使用USB接口的功能
*/
//interface USB
//{
// void open();
// void close();
//}
//class notebook
//{
// //运行功能
// public void run()
// {
// System.out.println(“A”);
// }
// //使用USB接口的功能
// public void useUSB(USB usb)//接口类型的变量 只能指向自己子类变量
// {
// if(usb!=null)
// {
// usb.open();
// usb.close();
// }
// }
//}
//需要鼠标 想要让鼠标被使用,必须符合规则
//class Mouse implements USB
//{
// public void open()
// {
// System.err.println(“B”);
// }
// public void close()
// {
// System.err.println(“C”);
// }
//}
//class bilaoye
//{
// public void jiangke()
// {
// System.out.println(“a”);
// }
// public void kandianying()
// {
// System.out.println(“b”);
// }
//}
//class bilaoshi extends bilaoye
//{
// public void jiangke()
// {
// System.out.println(“c”);
// }
// public void diaoyu()
// {
// System.out.println(“d”);
// }
//}
//class Fu
//{
// int num = 3 ;
// void show()
// {
// System.out.println(“FuRun”);
// }
//}
/*多态中成员调用的特点
*
* 1.成员变量
* (父类必须存在成员函数,否则编译不通过)编译和运行都参考等号的左边
* 2.成员函数
* 函数有重写存在,如果父类存在成员函数,编译通过。执行子类同名函数,若子类不存在同名函数,那么运行父类函数
* 编译看左边运行看右边
* 对于成员函数是动态绑定到对象上
* 3.静态函数
* 编译和运行都看左边
* 静态函数绑定在类上(没有对象)
*/
//class Zi extends Fu
//{
// int num = 5 ;
// void show()
// {
// System.out.println(“ZiRun”);
// }
//}

//object类中的常用方法
/*API(应用程序接口)
* 1.equals方法
*/
class Person234 extends Object
{
private int age;
Person234(int age)
{
this.age = age ;
}
//判断是否为同龄人,这个方法也是在比较两个Person对象是否相等
//注意,person类中是否有比较两个person对象相等的方法 因为继承object 他本身就具备equals方法

//但是equals方法判断的是地址,不是我们需要的内容
//继续使用equals方法,但是建立子类自己的内容。   重写
public boolean equals(Object obj)
{
    /*
     * 建立Person自己判断相同的依据。判断年龄是否相同
     * return this.age == obj.age;//obj所属类型object,object中没有定义age,所以编译失败
     * 如果调用该方法的对象时同一个,就不要转型和判断,直接返回true
     * age是person类型的属性,既让要用到子类型中的内容,需要向下转型
     */
    if(this == obj)
    {
        return true;
    }
    if(!(obj instanceof Person234))
        //return false;
    throw new ClassCastException("类型不对,请改正!!!");
    Person234 p = (Person234)obj;//转型
    return this.age == p.age;

}
//覆盖toString方法 建立Person对象自己的字符串表达形式
public String toString()
{
    return "Person234[age="+age+"]";
}

// public boolean compare(Person234 p)
// {
// return this.age == p.age;
// }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值