继承、方法的重写、Object类及toString方法 灰太狼 2023-08-17 17:02 69阅读 0赞 extends意思为“扩展”,子类是父类的扩展,实现了代码的重用。 1.父类也称超类、基类、派生类等 2.java中只有单继承,java中类没有多继承,接口有多继承。 3、子类继承父类,可以得到父类全部的属性和方法(除了父类的构造方法),但不可以直接访问父类的私有属性和方法。 4,如果一个类,没有调用extends,则它的父类是java.lang.Object. **instanceof**关键词用来判断是不是属于该类型 public class TestExtends { public static void main(String[] args) { // TODO Auto-generated method stub Student stu=new Student(); stu.height=160; stu.name="laura"; stu.rest(); Student stu2=new Student("hui",20,"software"); System.out.println("名字是"+stu2.name+"年龄是"+stu2. height +"专业是"+stu2.major); System.out.println(stu2 instanceof Student); System.out.println(stu2 instanceof Person); System.out.println(stu2 instanceof Object); System.out.println(new Person() instanceof Student);//反过来错误,Person不属于Student } } class Person /*extends Object*/ { //Ctrl+t键可以查看继承结构 String name; int height; void rest(){ System.out.println("休息一会!"); } } class Student extends Person{ String major; void study(){ System.out.println("学习两小时"); } public Student(String name,int height,String major){ this.name=name; this.height =height; this.major=major; } public Student(){ //要自己加入构造器 } } ![1649057-20190812182241052-1378773792.png][] **方法的重写override**:子类通过重写父类的方法,可以用自身的行为替换父类的行为。 方法的重写需要符合下面三个条件: 1.方法名,形参列表相同 2.返回值类型和声明异常类型,子类小于等于父类 3.访问权限,子类大于等于父类 ![1649057-20190812185512864-1335002111.png][] **Object类:**是所有java类的根基类,所有java对象都拥有Object类的属性和方法。 按住ctrl可查看源码: ![1649057-20190812200905909-2076223627.png][] 位于java.lang包,核心包里;Object是所有类的根,每一个类都可以把它当做父类,所有对象包括数组实现了这个类。 可从右侧outline大纲中查看方法: ![1649057-20190812201255994-1542523285.png][] **常用方法:toString** 查看toString方法及源码: ![1649057-20190812201751358-548967204.png][] 输出结果会 **返回包名+类名+@+16进制字符串** ![1649057-20190812202642630-158329836.png][] **toString方法的重写:** ![1649057-20190812203900574-1872327058.png][] **"=="和equals:** "=="代表比较双方是否相同,如果是基本类型则表示值相等,如果是引用则表示地址相等即是同一个对象。 equals方法是Object类中提供的一种方法,定义为public boolean equals方法,提供定义“对象内容相等”逻辑。 ![1649057-20190812223002453-284271743.png][] public class TestEquals { public static void main(String[] args) { // TODO Auto-generated method stub Object obj; String str; User u1=new User(1706,"laura","1234"); User u2=new User(1706,"laura","12356"); System.out.println(u1==u2); System.out.println(u1.equals(u2));//重写之后只根据id进行判断 String str1=new String("laur"); String str2=new String("laur"); System.out.println(str1==str2);//false 不是一个对象 System.out.println(str1.equals(str2));//true 同一个内容 } } class User{ int id; String name; String pwd; /*右键Source+Generate Constator using fields,可以生成构造器*/ public User(int id, String name, String pwd) { super(); this.id = id; this.name = name; this.pwd = pwd; } /*重写equals方法,可以自己生成source+Generate equals*/ @Override public boolean equals(Object obj) { if (this == obj) //如果传进来的obj和对象的相等,则true return true; if (obj == null) //若传进来为空,不用比,为false return false; if (getClass() != obj.getClass()) //若传进来类不一样,不用比 return false; User other = (User) obj; //强制转型为User if (id != other.id) return false; return true; } } ![1649057-20190812225546472-1054125719.png][] 转载于:https://www.cnblogs.com/laurarararararara/p/11341773.html [1649057-20190812182241052-1378773792.png]: /images/20230808/e0ac2b9821de44a7bcaff63c36b4d6ad.png [1649057-20190812185512864-1335002111.png]: /images/20230808/ddfad4de4feb4647bf40431475400fc2.png [1649057-20190812200905909-2076223627.png]: /images/20230808/029429cf41a44cb8b16c61ba1680adb7.png [1649057-20190812201255994-1542523285.png]: /images/20230808/b686c497d5474bef8f904c5a0ccf92ec.png [1649057-20190812201751358-548967204.png]: /images/20230808/565d5a19d3364965b64036b5b9976fe4.png [1649057-20190812202642630-158329836.png]: /images/20230808/a87a23afe4924db487997a72c190f511.png [1649057-20190812203900574-1872327058.png]: /images/20230808/38907365cea14e72b130c28b18ea757f.png [1649057-20190812223002453-284271743.png]: /images/20230808/9d1e5f1e31c7432390fc773f2c274e02.png [1649057-20190812225546472-1054125719.png]: /images/20230808/fc2c34c2cd0946339da04fcc9f8793c9.png
还没有评论,来说两句吧...