java基础 第十章(this,继承,重写和重载的区别)
一、this
1.指向当前对象
(1)静态方法中不能this调用,因为静态方法是共享的。
(2)静态方法的调用:类名.方法名();
非静态方法的调用:new 类类型.方法名();
2.this指哪个对象调用了这个方法,this就指向哪个方法。
3.类中每个成员变量都有this指向,当局部变量和成员变量重名的时候,必须要加this,不叫this,局部变量给局部变量赋值
例:class Student{
private int num;
public student( int num ){
this.num = num // 不加this num = num
}
}
二、继承
1.表示层级关系,下一级完全拥有上一级的属性。
2.继承是类与类之间的关系。
3.继承只能单继承。
4.继承就是向上抽取的过程
5.继承的关键字 extends
例:class gFather{
public void eat(){
System.out.println("会吃饭");
}
public void shuai(){
System.out.println("长得很帅");
}
}
class Father extends gFather{
public void height(){
System.out.println("长得高");
}
public void money(){
System.out.println("有钱")
}
}
class Son extends Father{
public void Studey(){
System.out.println("学习好");
}
}
public class test{
public static void main(Striing[] args){
Son son1 = new Son();
Son1.eat();
Son1.money();
Son1.study();
}
}
6.java 虽然没有多继承,但是可以实现多重继承。
三、重写和重载的区别。
补充:
覆盖 ——> 前提条件:要有继承
方法名,返回值,参数列表要和父类一模一样
子类权限 >= 父类
权限 ——> public > protected(默认)
注意:private,加上就等于封装了,外界访问不到。
1.重载:方法名相同,参数列表不同,在同一个类中。
2.重写:是继承的关系,要求子类覆盖父类的方法,而且方法名,返回值,参数列表一样,但控制范围子类 >= 父类
例:class Animal{
public void eat(){
System.out.println("吃")
}
}
class pig extends Animal{
public void eat(){ // 改为 public void eat ( int a ){ 就有重载了
System.out.println("猪吃");
}
//还有
public void eat(){
System.out.println("吃");
}
}