总结3-13
1:this
用在实体类中,表示当前对象;可以使用this调用成员变量和成员方法。也可以调用构造方法
注:只能在构造方法中调用另一个构造方法,且用this调用构造方法只能写在首行。
2:类对象可以作为成员方法的参数
声明两个类,类2的对象是类1成员方法的参数(形参),需要在类1中调类2对象的成员方法。并在main函数中声明两个对象,使用类1对象成员方法。
3:多类合作
一个类作为另一个类的成员变量
注:需要在一个对象赋值给另一个对象的成员变量!!!
4:继承【重点】
语法格式:
class A{ 成员变量; 成员方法; 构造方法; } class B extends A { //B可以继承A的成员变量、成员方法和构造方法。 }
子类可以使用父类的:
成员方法:(public、默认的)(private无法使用)
成员变量:(public、默认的)(private无法使用)
构造方法:子类的构造方法必须和父类保持一致,且会先执行父类的构造方法。
总结3-14
继承
只能单继承(只能有一个父类),但可以多重继承。
重写(override)
目的 :
和继承有关,重写的是方法,子类可以继承父类的非私有化的方法。若父类方法不能满足子类的需求,则可以对父类方法进行重写。重写(方法名、返回值类型、参数都保持一致;只有方法体不一样。)重写方法不是子类独有的。
重写的规则:
1.必须有继承关系。 2.在子类中重写父类方法。 3.父类的方法只能是公开或者默认的方法。 4.在子类中重写父类的方法只有方法体不一样,(返回值、名字、参数)
重载(overload)
在Java的同一个类中,如果方法名一样,参数不一样,那么方法间互称重载。
重载的规则:
1.方法的重载必须写在同一个类中。 2.方法名一样,参数列表不一样。 3.返回值都可以。 4.无参构造和有参构造也是方法重载。
super关键字
this与super的区别:
this和super在构造方法中调用另外一种构造方法时,this/super关键字必须写在首行且只能调用一个构造方法!!!!!!
this:代表当前对象。
1:this可以调用成员变量和成员方法。
2:this可以调用构造方法。
super:代表父类对象。
1:super可以调用成员变量和成员方法。
2:super可以调用父类的构造方法。
可以在子类中通过子类的无参构造方法去调用父类的有参构造方法(在子类的无参构造中使用super()) ,当一个类若有有参构造方法,那么这个类的默认无参构造将被覆盖!!!不能在一个构造方法中调用多个父类的构造方法。
子类的构造方法在调用父类构造方法的时候,一定要确保 父类中有此对应好的构造方法!!!!
抽象类
使用abstract修饰的类叫抽象类。(抽象类本身是不能运行的,只能被子类扩展(继承)!!!)
使用abstract修饰的方法叫抽象方法。(抽象方法只是声明,没有实现)
抽象类是不能被实例化的(不能创建对象)!!!
但是抽象类可以有构造方法(用来初始化属性)!!!
抽象类只能被用来继承(扩展),不能被final修饰!!!
语法格式:
abstract class Person { //正常类的属性 String name; //普通的成员方法 public void eat () { System.out.print("吃饭"); } //抽象方法 没有方法体的方法 没有大括号的 public abstract void sleep (); }
若父类是抽象类,子类可以通过重写父类的抽象方法而使用。
在实例化子类对象的时候,无论子类的父类是不是抽象类都会先调用父类的构造方法。
抽象类的详解:
1.如果一个类中有抽象方法,一定是抽象类。
2.抽象类中也可以有普通方法。
3.抽象方法是一个没有方法体的方法,是不完整的方法。
4.抽象类不能被实例化,没有对象。
5.在抽象类的子类中,必须重写父类中所有的抽象方法,使抽象方法有意义(可实现)。
6.抽象类中,非抽象方法也可以被子类重写。
7.可以通过普通类去继承抽象类。
8.抽象类可以继承另一个抽象类。
9.抽象类也可以继承一个非抽象类。