javase 继承

一、方法的return

1、return结束方法

在方法内部表示返回

 

代码运行到了return,表示这个方法已经有结果了,并且已经将结果返回到上一层方法 既然方法已经有结果了,表示方法中的代码运行完毕 一个方法中,return后的语句是永远不会执行到的,既然执行不到,直接编译报错

return的巧妙使用:

/** 一旦进了if,肯定会执行return num1;返回num1是最大值,因为执行了return,return后的语句就不会 执行了 如果没有进入if,表示num是小于num2的,执行return num2

*/

public int max(int num1,int num2)

{ if(num1 >= num2){ return num1; }

return num2; }

2、void和return

void:方法没有返回值 return:方法返回某个值 这两个是矛盾的。 但是,有时候我们可以将两个一起使用,目的是在某些场景下手动结束方法。

public void max(int num1,int num2){ if(num1 >= num2){ System.out.println(num1); return; } System.out.println(num2); }

二、static关键字

public protected private class void byte short int long float double char boolean return if else for while switch do break continue default

1、static的作用

static的作用: 前面的案例将static关键字添加到了成员变量中,表示这个成员变量提升到了类级别,供所有该类的对象 共享这个成员变量 某个对象修改了这个成员变量的值,其他对象访问这个成员变量时,值也是修改了的 static修饰成员变量的时候,不再使用 对象.成员变量来访问,使用类名.成员变量

2、static语法

(1)修饰成员变量

成员变量提升为类级别,调用方式 类名.成员变量名

 

(2)修饰方法

 

提升到类级别,这个行为不再是属于某一个对象的了,理解为该类型所有的对象都共享这个方法 static修饰的方法和成员变量是在类初始化/类加载的过程是解析的 是在创建对象之前 而this表示当前”对象“,有对象的时候this才会生效。 而jvm解析static方法的时候,还没有创建对象,所以说在static修饰的方法中使用普通的成员变量会编 译报错

(3)语法汇总【重点】:

static 叫做静态的,属于可选修饰符 修饰成员变量或者方法,被修饰的成员变量或方法叫做静态成员变量和静态方法 在类加载的时候进行初始化操作 非static的成员变量不能在static静态方法中使用 非static的方法也不能在static静态方法中调用

三、继承

1、理解继

继承:继承财产,遗传 生活中:你爹有的,你也有,你有的,你爹不一定有

向上抽象,想象这些类型的共同属性和行为

为什么要有继承? 减少代码量 相同属性统一在父类中维护,提高代码的可维护性 提高代码的扩展性 所有的类型最顶层的父类是Object,即使我们没有手动去写extends Object

2、继承语法

java中只能是单继承 一个子类只能“直接”继承一个父类 一个子类可以有多个父类(对,但是直接继承的父类只能有1个) 一个父类只能有一个子类(错,一个父类可以被多个子类继承) 一个类如果没有显式继承某一个父类,默认继承的是Object(所有的类都是Object的子类,Object 是所有java类的父类) 父类也可以成为:基类、超类、根类 子类也可以成为:派生类、拓展类

3、子类可以从父类中继承哪些内容

类中:成员变量 构造方法 方法

(1)成员变量

父类的成员变量能够被继承到子类,前提,看访问修饰符 public 可以 protected 可以 缺省 父类和子类在同包下可以的,如果不同包则不能被继承 private 不能被继承

(2)方法

方法同成员变量

(3)构造方法

构造方法是不能被继承的,但是可以被调用

所有的子类的构造方法,构造方法的第一句一定是用来调用父类的构造方法的!!! 调用的语法: super(参数列表) 每一个子类的构造方法,第一句代码一定默认是super(); 每个子类的构造方法,第一句代码一定是用来调用父类的构造方法的,如果没有显式调用,默认调用过的是 super();

 

四、方法的重写

1、什么是方法重写

在继承关系中,子类和父类拥有相同的行为,但是子类的行为实现和父类不一致,如何解决,通过方法 重写 例如:你父亲会赚钱养家,我也会赚钱养家,但是父亲赚钱的形式和我不一致,我就可以重写“赚钱养 家”这个方法 如何根据子类抽象父类??? 找共同特征

五、Object

所有类型的父类 所有类型的对象都可以调用Object类的方法,包括数组对象

1、常用的方法

(1)int hashCode() 返回哈希值 打印对象的时候,结果中就有hashCode值

(2)equals

比较对象的相等

== 和 equals 的区别: 如果不考虑equals的重写,单纯的Object中 == 和 equals是没有区别的,因为equals在Object中的实现 也是 == 但是如果我们想比较两个对象的内容是否相等的时候,需要在子类中重写equals方法

(3)toString()

toString 调用对象的toString方法目的是想让这个对象以字符串的形式展示 如果直接使用toString,调用的是Object的toString,没有什么意义 所以,如果我们想把对象转为字符串形式来展示对象内容,可以重写toString toString在什么地方使用??????? 代码调试的时候,如果你不确定对象的属性值,可以重写对象的toString方法,使用 System.out.println(对象)打印到控制台上

六、super

this 当前对象 super 父类对象 super和this的使用语法是一模一样的,只是this指代的是当前对象,super指代的是父类型的对象

七、扩展

1、对象的生命周期

jvm在执行new Person()的时候: 先执行类加载 [.class文件加载到jvm中] 初始化 -> 为static修饰的变量等开辟内存空间 创建对象

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值