一、方法:
1.方法的签名:
方法名+参数列表;
2.方法的重载:
发生在一个类中,方法名称相同,参数列表不同;
编译器在编译时回根据签名自动绑定调用方法;
3.构造方法:
①给成员变量赋初值;
②与类同名,没有返回类型;
③在创建对象是被自动调用;
④若自己不写构造方法,则编译器默认一个无参构造方法;
若自己写了构造方法,则不再默认构造;
⑤构造方法可以重载;
4. this:
指代当前对象,那个对象调方法指的就是哪个对象;只能用在方法中,方法中访问成员变量之前默认有个this;
二、继承:
1.作用:
实现代码的复用、避免代码重复;
2.通过extends来实现继承
3.父类/基类:所有子类所共有的属性和行为;
子类/派生类:子类所特有的属性和行为;
4.一个父类可以有多个子类;
一个子类只能继承一个父类-------单一继承;
5.继承具有继承性;
6. Java规定:
构造子类之前必须先构造父类;
若子类自己不调父类构造,则编译器默认在子类构造第一句通过super()调用父类的无参构造
若子类自己调了父类构造,则不再默认提供;
super()调父类构造必须位于子类构造的第一行;
三、向上造型:
①父类型的引用指向子类的对象;
②能点出什么,看引用类型;
四、重写与重载的区别:
1.重写(Override):
①发生在父子类中,方法名相同,参数列表相同,方法体不同
②重写遵循"运行期"绑定,看对象的类型来调用方法
2.重载(Overload):
①发生在一个类中,方法名相同,参数列表不同,方法体不同
②重载遵循"编译期"绑定,看引用的类型来绑定方法
public class test01 { public static void main(String[] args) { Animal animal1 = new Animal(); Animal animal2 = new Animal("red",2); Animal animal3 = new Dog();//向上造型 ; animal3不能用子类的type属性、job方法 animal3.color="green";//父类型的属性color animal3.age=3;//父类型的属性age; animal3.sayWord();//父类型的方法sayword Cat cat = new Cat(); cat.job(); } } /**动物*/ class Animal{ String color;//成员变量 int age; Animal(){//无参构造函数;如果没有以下三个函数会有一个默认无参构造函数 } Animal(String color){//重载 this.color=color; } Animal(String color,int age){//重载 this.color=color; this.age=age; } void sayWord(){ System.out.println("我是动物"); } } /**狗*/ class Dog extends Animal{//Dog继承Animal String type; void sayWord(){//重写父类Animal中的sayWord super.sayWord(); System.out.println("而且是人类忠实的朋友"); } void job(){ System.out.println("我的职责是看护庭院"); } } /**猫*/ class Cat extends Animal{ String type; void sayWord(){ System.out.println("我是一只有灵性的猫"); } void job(){ System.out.println("我的职责是抓老鼠"); } }