8继承中的构造方法、继承中的代码块执行顺序、Object类equals方法、hashcode方法、toString方法、组合关系、多态、父类作为方法参数、父类作为方法返回值、抽象方法和抽象类...

# java

## 介绍
java基础

#### 
bool类型的get方法,方法名是is开头的
#### 继承中的构造方法
构造方法不能继承
子类构造方法在执行时,一定会调用父类的构造方法
在子类构造方法中,通过super()方式调用父类构造方法
当父类中定义了无参数构造方法,super()可以省略不写,默认就是在调用父类中没有参数的构造方法
当父类中没定义无参数构造方法,必须显示写出super(),还要传入实参,super()还必须是子类构造方法的第一行
#### 继承中的代码块执行顺序
C extends B extendsA
//代码执行顺序
//A的静态代码块>B的静态代码块>C的静态代码块>A的普通代码块>A的构造方法>B的普通代码块 >B的构造方法>C的普通代码块>C的构造方法
#### Object类equals方法
equals方法和==方法
==如果两端是基本数据类型,判断的是值是否相等;如果两端是引用类型,那么判断的是引用的地址是否相等,判断是否指向内存上的同一个数据

string的常量池机制
方法区中有常量池,new string的代价

equal判断string指向的地址上的字符值是否相等

判断自定义类的两个对象的属性值是否全部相同,需要重写equals方法,使用重写的equals方法
#### Object类hashcode方法
和equals方法一样,只要对象的属性值相同返回的hash码就是相同的
equals方法是返回true,hashcode方法是返回一串无序不重复的数字
目的是为每一个对象生成独立的编码,也叫哈希码
在自定义类中,也会重写该方法,可以将该方法的实现方式改为根据属性计算生成
#### Object类toString方法
toString的目的是返回一个字符串表达形式(查看对象属性信息的方法)
#### 组合关系
继承和组合是复用代码的两种方式
对于组合来说,一个类的属性不仅仅是基本数据类型,也可以是我们自定义的其他类,一个类作为另一个类的属性
#### 多态
一种事物,多种表现形态

子类声明成父类对象,子类拥有父类的全部属性和方法,还有自己独有的方法
父类对象能做的事情,子类对象就能做

向上转型(子类声明成父类)
如果子类对父类的方法进行了重写,子类声明成父类对象时,调用的是子类重写父类对象的方法
子类对象声明成父类对象后,只能调用到父类声明过的方法,不能调用到子类独有的方法
编译时认为是父类对象,只能调用到父类对象的方法,执行时认为是子类,执行子类重写的方法,占用子类内存

向下转型(父类声明成子类)
父类不能转换成子类对象,因为父类不能完成子类功能,但是可以强制转换让代码通过编译,但是运行时会出现类型转换异常
如果父类对象原本就是由子类对象声明而成的,那么转换成子类对象时不会出现异常的
#### 父类作为方法参数
父类作为方法参数,传参数的时候,如果是子类,会有一个默认的向上转型
#### 父类作为方法返回值
父类作为方法返回值,其任何一个子类对象都可以是返回的结果
也是隐形的向上转型
注意:如果想要判断返回的对象到底是哪个子类声明而来的,使用instance of运算符
#### 抽象方法和抽象类
1没有方法体的方法叫做抽象方法
2抽象方法由一个关键字abstract修饰
3抽象方法必须在抽象类中
4抽象类由abstract修饰
5抽象类不能被直接实例化
6抽象方法必须被子类重写,并提供方法体
7可以实例化抽象类的子类,声明成父类
8抽象方法其实就是对子类的一种要求,体现者子类必须具有哪些功能
9抽象类其实就是一个要求的集合
10抽象类体现者程序的设计和实现相分离的思想
11如果子类不想实现抽象方法,那么子类必须也是抽象类
12抽象类的子类要实现所有直接父类和间接父类的抽象方法
13抽象类中可以有非抽象方法
14抽象类可以有构造方法,但是不能被直接调用,是为了满足继承而准备的 
#### 子父类对象在转换时应该注意什么
1子类对象可以声明成父类对象,向上转型,编译时认为是父类对象,只能调用到父类声明过的方法,
执行时认为是子类对象,占用子类内存,如果子类重写了父类的方法,会调用子类的方法
2父类声明成子类对象不允许,可以使用强制转换使编译通过,但是运行时会出错。如果父类对象原本就是子类对象,不会出错
父类作为方法参数,任何一个子类的对象都可以作为实参传入
父类作为方法返回值,任何一个子类对象都可以作为结果返回
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JavaHenShuai

你的鼓励将是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值