The seventh day
1.父类也称作超类,基类,派生类
2.Java中只有单继承,没有像C++那样的多继承,多继承会引起混乱,使得继承链过于复杂,系统难于维护
3.Java的接口可以多继承;类只能单继承
4.子类继承父类,可以得到父类的全部属性和方法(除了父类的构造方法),但不见得可以直接访问(比如父类的私有属性和方法)
5.如果定义一个类,没有调用extends,则它的父类是:java.lang.Object。
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)方法,提供定义“对象内容相等”的逻辑。
“==”代表比较双方是否相同,如果是基本类型则表示值相等,如果是引用类型则表示地址相等即是同一个对象;
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 * * * *
default * *
protected * * *
public * * * *