内存分配:
局部变量:基本数据类型
全局变量:
继承
父类
1.子类继承父类 关键字 extends
java中是单继承关系:一个只类能有一个直接父类,但是可以多重继承。
子类继承父类时,能够继承属性和方法但不能继承构造方法,不能直接访问父类的私有属性和私有方法
在使用过程中,虽然子类中虽然没有定义,但也可以使用父类的方法方法
关键字:
this(代表当前对象)
代指当前对象,即谁调用方法,this就是谁
this可以用于区分示例变量和举报变量
public void msg() { int type; System.out.println(this.type); }
1.this调用本类的其他构造方法。语法:(参数列表);通过this调用本类构造方法时,代码必需写在第一行。
2.this调用本类中的其他方法。(this可省略)
super(用于访问父类对象)
1.父类的构造方法不能被继承,但是通过super可以调用父类的方法
主要作用:给继承过来的属性赋初始值
语法:super(参数列表);
super();
调用父类的无参构造,只能出现子啊子类构造方第一行
2.通过super方法父类中的其他方法(非私有)。语法super.方法名(参数列表);
3.通过super访问父类中的属性(非私有)。语法:super.属性名;
public Phone() { super(); } public Phone(String brand) { super(); 必须第一行 // this(); 必须第一行 this.brand = brand; } public void m1(){ super.sell();//调用父类方法 super.m1;//调用父类属性 this.sell();//调用自身方法 sell();//调用自身方法 }
方法重写@override:
当父类方法不能满足子类需求时,子类可以重写(覆盖)父类方法
重写要求:
1 .前提条件 子类 重写 父类方法(发生再父子类之间)
2.子类重写父类方法
3.要求方法名称,参数列表必须相同
4.返回值 要求子类的返回值类型小于等于父类的反回值类型
5.方法修饰符 子类的方法修饰符权限范围要大于父类
方法重载和方法重写的区别和联系?
overload和override
overload:方法重载
1.前提条件 同一个类中
2.方法名称相同 参数列表相同
3.对返回值没有要求
Object类是所有类的祖宗类
自定义的类,没有直接父类,会继承Object类
Person extends Object{}
继承总结
在java中使用extends关键字实现继承。被继承的类叫做父类,或超类,或基类。
java中继承的特点
-
一个类只能有一个父类。----不允许多继承
-
子类会继承父类全部的属性和方法(私有的也能继承,只是不能直接访问),无法继承构造方法。
3.如果要访问父类中的属性、方法、构造方法使用super关键字。
4.子类可以重写父类的方法。调用时默认调用子类的方法。
5.可以多层继承。A extends B,B extends C,这样A将拥有B和C中的内容
6.所有类的根类是Object。如果一个类没有继承任何类,默认继承Object类。
-
通常在子类的构造方法中调用父类的构造方法。
根类:没有父类的类。已经是最顶层的类了
继承的好处和弊端
继承的好处:
-
提高了代码的复用性(多个类相同的内容可以放到同一个类中)。
-
提高了代码的维护性(如果方法的代码需要修改,修改一处即可)。
继承的弊端:
-
继承让类与类之间产生了关联,类的耦合性增强了,当父类发生变化时,子类也不得不跟着变化,削弱了子类的独立性
什么时候使用继承?
1.继承体现的关系是:is a(是一个)
2.如果两个类A和B,如果他们在逻辑上满足A是B的一种,或是B是A的一种,就说明他们是继承关系,这个时候可以使用继承来体现,否则就是滥用继承。
3.例如:苹果和水果,苹果属于水果,可以让苹果类继承于水果类。再例如:苹果手机和手机,苹果手机是手机的一种,可以让苹果手机类继承于手机类。再例如:猫和狗,不能让猫继承于狗,也不能让狗继承于猫,而是定义一个动物类,他们都继承于动物
-
-
多态
多态产生的场景:
1.继承关系下 父子之间
父类 对象名=new 子类();
父类的引用指向子类对象
编译找父类方法,运行执行找子类内容
父类对象强制转换为子类类型
对象名 instanof 类名
2.接口和实现类