1.类的继承:用extends来表示继承。例 ,每一个文件里面只能有一个public class

class Test{
    pubilc Test(){
                    }
    protected void dosomething(){
                   }
    protected Test dolt(){
                   return new Test();
                    }
}
class Test2 extend Test{
    pubilc Test2(){
                  super();      //调用父类的构造方法
                  super.dosomething();
                  }
     pubilc void dosomething(){     //重写父类的方法
                  }
      还可以新增方法
}

重写可以改变方法的实现内容,改变成员方法的存储权限,修改成员方法的返回值类型,只是保留方法名称

有一种特殊的重写叫做重构,子类与父类的成员方法返回值,方法名称,参数类型和个数完全相同,只是方法的实现不同。

2.object类:在Java里所有的类都直接或间接地继承了java.lang.Object类。Object类是比较特殊的类,它是所有类的父类,是Java类层中的最高层类。java中每个类都源于java.lang.Object类,如:String,Integer等。因为所有的类都是继承Object的子类,所以定义类的时候省略了extends Object。一下为常用的可以重写的类:

1)getClass():它会返回对象执行时的class实例,然后用getName()f方法取得类的名字,常常与toString()联合使用

2)toString():返回的是一个String实例,当这个类转换为字符串或与字符串连接时,将自动调用重写的toString()方法。

public class Test {
    public String toString(){
  return getClass().getName();
    }
    public static void main(String args[]){
  System.out.println(new Test());
}
    
 }  ---输出为类的名字

3.equals()方法:“==”比较的是两个对象的引用是否相等,而equals()方法比较的是两个对象的实际内容。

public class Test {
    public static void main(String args[]){
  String s1="abc";
  String s2="abc";
  V v1=new V();
  V v2=new V();
  System.out.println(s1.equals(s2)); ----true
  System.out.println(v1.equals(v2)); --false
}
  } ---当类使用equals时默认实现方法是用“==”比较两个对象的引用地址,而不是比较对象的内容,所以如果类想使用的时候要想比较两个对象的内容,就重写equals方法。

3)对象类型的转换:1)向上转型:例如:平行四边形继承四边形:则向上转型就是如四边形里面定义了一个方法:draw(参数是四边形),可以使用draw(平行四边形),由具体转抽象不会出错。

2)向下转型:就是将抽象的转具体的,这时候 要 注意要显示转换,不然会出错。例:四边形 p=new 平行四边形();对的,为向上转型但是平行四边形 q=p;//这时候编译器会报错,因为要显示类型转换。平行四边形 q = (平行四边形)p,这样就不会错了。

4.使用instanceof判断对象类型:判断一个类的对象是不是另一个类的实例,常用来判断父类对象是不是子类对象的实例。例如class A extends B{}

B q=new B();  if(q instanceof A) --这时候返回true

5.方法的重载:允许在同一个类中存在一个以上的同名方法,只要这些方法的参数个数或类型不同即可。具体看书p184

只有返回值不同不足以区分这两个方法的重载,还需要用过参数的个数以及参数的类型来设置

6.多态:就是父类定义一个方法后,子类可以向上转型使用这个方法,节省了开发和维护的时间。具体见p188

7.抽象类与接口:抽象类不用换初始化对象,子类才需要。抽象类的语法如下:

public abstract class Test{
     abstract void testAbstract(); --抽象方法。这个方法没有意义,除非被重写,在java中,类不可以继承多个父类
}

接口:是抽象类的延伸,可以将它看做是纯粹的抽象类,接口中的所有方法都没有被方法体。将方法放在方法体中,虽有需要这个方法的类实现这个接口,同时也继承图形类,这就是接口存在的必要性。

publi interface drawTest(){
  void draw();//接口方法,省略abstract关键字。}
public class A extends B implements drawTest{} 使用接口。

接口里面的定义的方法为pubilc 或abstract形式。其他修饰权限不被java编译器认可。

不可以多继承,但是可以实现多个接口,例如:public class a implements a,b,c,d{}