The seventh day

1.父类也称作超类,基类,派生类
2.Java中只有单继承,没有像C++那样的多继承,多继承会引起混乱,使得继承链过于复杂,系统难于维护
3.Java的接口可以多继承;类只能单继承
4.子类继承父类,可以得到父类的全部属性和方法(除了父类的构造方法),但不见得可以直接访问(比如父类的私有属性和方法)
5.如果定义一个类,没有调用extends,则它的父类是:java.lang.Object。
方法的重写override(指的是子类重写父类的方法)
子类通过重写父类的方法,可以用自身的行为替换父类的行为
还回值类型声明异常类型,子类小于父类
Object类是所有Java类的根基类,也就意味着所有的Java对象都拥有Object类的属性和方法
 1 package cn.sxt.oo2;
 2 //object是对象的意思
 3 public class TestObject {     //继承了Object类
 4  public static void main(String[] args) {
 5   //Object obj;
 6   TestObject to = new TestObject();
 7   System.out.println(to.toString());
 8   Perso p2 = new Perso("洗洗",6);
 9  }
10  public String toString(){
11   return "测试Object";
12  }
13 }
14 class Perso{
15  String name;
16  int age;
17  
18  public String toString(){
19   return name+"年龄:"+age;
20  }
21  public Perso(String name,int age){//构造器
22   
23  }
24 }

 

继承_equals方法的重写:
 “==”代表比较双方是否相同,如果是基本类型则表示值相等,如果是引用类型则表示地址相等即是同一个对象;
 equals是Object类中定义的方法,public boolean equals(Object obj)方法,提供定义“对象内容相等”的逻辑。
 1 package cn.sxt.oo2;
 2 public class TestEquals {
 3  public static void main(String[] args) {
 4   Object obj;
 5   String str;
 6   User u= new User(111,"邹奇方","35551520");
 7   User u2 = new User (000,"邹奇方","65551520");
 8     System.out.println(u==u2);
 9  }
10 }
11 class User{
12  int id;
13  String name;
14  String pwd;
15  public User(int id, String name, String pwd) {
16   super();
17   this.id = id;
18   this.name = name;
19   this.pwd = pwd;
20  }
21  public boolean equals(Object obj) {
22         return (this == obj);
23     }
24 }

 

 
super是直接父类对象的引用。可以通过super来访问父亲中被子类覆盖的方法或属性。
 1 package cn.sxt.oo2;
 2 public class TestSuper {
 3  public static void main(String[] args) {
 4   //new ChildClass().f();    //此行注释无输出结果,此行不注释输出4个结果,故子类也可继承父类的输出
 5   
 6  
 7  }
 8 }
 9 class FatherClass{
10   int value;
11   public void f(){
12    value=100;
13    System.out.println("FatherClass.value="+value);
14   }
15 }
16 class ChildClass extends FatherClass{
17  int value;
18  public void f(){
19   super.f();         //调用父类对象的普通方法
20   value = 200;
21   System.out.println("ChildClass.value="+value);
22   System.out.println(value);
23   System.out.println(super.value);    //调用父类对象的成员变量
24  }
25 }
 1 package cn.sxt.oo2;
 2 public class TestSuper {
 3  public static void main(String[] args) {
 4   //new ChildClass().f();    //此行注释无输出结果,此行不注释输出4个结果,故子类也可继承父类的输出
 5   
 6  
 7  }
 8 }
 9 class FatherClass{
10   int value;
11   public void f(){
12    value=100;
13    System.out.println("FatherClass.value="+value);
14   }
15 }
16 class ChildClass extends FatherClass{
17  int value;
18  public void f(){
19   super.f();         //调用父类对象的普通方法
20   value = 200;
21   System.out.println("ChildClass.value="+value);
22   System.out.println(value);
23   System.out.println(super.value);    //调用父类对象的成员变量
24  }
25 }

 

面向对象三大特征_封装——访问控制符:
 修饰符        同一个类是否能看见        同一个包中        子类            所有类
 private                 *                                                  
 default                 *                                 *                  
 protected            *                                  *                         *                  
 public                  *                                  *                        *                  *
posted @ 2019-01-26 23:35  齐方  阅读(197)  评论(0编辑  收藏  举报