一.内容简介
1.初始化与清理
2.访问权限
3.继承概要
4.final,static
5.练习一
二.内容梳理
1.初始化与清理
1.1构造函数
构造函数:用来初始化成员变量的函数,没有返回值,函数名与类名一致。
默认构造器:没有参数的构造函数。类中如果没有构造器,编译器会自动创建
默认构造
器。
构造函数的嵌套:可以在构造器中调用被重载的其他构造器,用
this(parameter
)调用。且只可以调用一个并放在起始处。
继承中的构造函数:构造函数不会被继承,子类的构造函数自动调用父类的默认构造函数,如果父类没有默认构造函数,则手动调用父类的构造函数。super(parameter).
1.2重载
重载:
方法名相同,参数列表不同。与返回值无关,返回值无法区分,如果返回值不同,方法名相同,参数列表相同,编译出错。
重载的参数
匹配:对应类型对应匹配。如果匹配不到:
(常数与char
)当做int用来
匹配,其他的数据类型逐渐提升数据类型来匹配
。
重写的返回类型必须一样或协变,否则编译错误。
1.3初始化
局部变量不初始化会报错,成员变量有默认的初始化。
初始化顺序:静态优于非静态,父类优先子类,变量优先于代码块优先于构造器。
静态数据的初始化:静态数据属于类,只占用一份存储区域,有标准的初值。静态数据的初始化时间是(静态数据被访问或对象被创建时)
1.4清理
垃圾回收机制只释放new的内存
类内定义finalize()方法,当垃圾回收发生时,finalize()被调用
(5)可变参数列表
例子:
点击( 此处 )折叠或打开
static void printArray(Object[] args){
}
printArray(1, 2, 3);
printArray((Object[])new integer[](1, 2, 3));
——构造函数使用可变参数列表会与默认构造函数弄混
2.访问权限
1.1
|
类内 |
包内(子类与非子类) |
包外子类 |
包外非子类 |
Public |
√ |
√ |
√ |
√ |
Protected |
√ |
√ |
√ |
× |
默认 |
√ |
√ |
× |
× |
private |
√ |
× |
× |
× |
1.2修饰类只有public和默认
3.继承概要
extends指明继承关系,未说明隐式继承Object.
向上转型:子类可以作为实参传入父类作为形参的方法。
this.value先找自己的成员,找不到去父类找的.
构造方法不会被继承
4.final,static
1.1
final强调不变。static强调跟随类。
1.2final
类不希望被继承
方法不希望被重写
变量不希望被改变
final修饰的值不一定是常量还是变量,DJ反编译看。
1.3static
静态变量
静态方法:
不能访问非静态成员方法和非静态成员变量
静态代码块
static不允许修饰局部变量;
5.练习一
(1)需求
——汽车销售人员销售汽车,款式有凯越,君威
——汽车与款式和编号,款式编号不可修改
——汽车销售人员有姓名
——销售人员按车型及数量销售
(2)代码
AutoType.java
点击( 此处 )折叠或打开
package
biz
;
public
class
AutoType
{
public
static
final
String
KAI_YUE
=
"凯越"
;
public
static
final
String
JUB_WEI
=
"君威"
;
}
Auto.java
点击( 此处 )折叠或打开
package
biz
;
public
class
Auto
{
private
String
autoType
;
// 款式
private
String
autoNumber
;
// 编号
private
boolean
isSelled
;
Auto
(
String
autoType
,
String
autoNumber
)
{
this
.
autoType
=
autoType
;
this
.
autoNumber
=
autoNumber
;
this
.
isSelled
=
false
;
// 默认未销售
}
public
String
getAutoType
(
)
{
return
autoType
;
}
public
String
getAutoNumber
(
)
{
return
autoNumber
;
}
public
boolean
isSelled
(
)
{
return
isSelled
;
}
public
void
setSelled
(
boolean
isSelled
)
{
this
.
isSelled
=
isSelled
;
}
}
seller.java
点击( 此处 )折叠或打开
package
biz
;
public
class
Seller
{
private
String
name
;
Seller
(
String
name
)
{
this
.
name
=
name
;
}
/**
*
* @param autos 所用的车
* @param autoType 要销售的类型
* @param num 要销售的数量
*/
public
void
sell
(
Auto
[
]
autos
,
String
autoType
,
int
num
)
{
// if(auto == null || autoType == null || num < 0) {
//
// }
int
selledNum
=
0
;
for
(
Auto curAuto
:
autos
)
{
int
i
=
0
;
i
+
+
;
if
(
!
curAuto
.
isSelled
(
)
&
&
curAuto
.
getAutoType
(
)
.
equals
(
autoType
)
&
&
selledNum
<
num
)
{
curAuto
.
setSelled
(
true
)
;
System
.
out
.
println
(
"准备售出-"
+
curAuto
.
getAutoType
(
)
+
"-"
+
curAuto
.
getAutoNumber
(
)
)
;
selledNum
+
+
;
}
}
if
(
selledNum
<
num
)
{
System
.
out
.
println
(
"库存不够。"
+
"只可售出"
+
selledNum
+
"辆"
+
autoType
)
;
}
}
public
String
getName
(
)
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
static
void
main
(
String
[
]
args
)
{
Seller s1
=
new
Seller
(
"小明"
)
;
Auto auto1
=
new
Auto
(
AutoType
.
JUB_WEI
,
"001"
)
;
Auto auto2
=
new
Auto
(
AutoType
.
JUB_WEI
,
"002"
)
;
Auto
[
]
autos
=
new
Auto
[
2
]
;
autos
[
]
=
auto1
;
autos
[
1
]
=
auto2
;
s1
.
sell
(
autos
,
AutoType
.
JUB_WEI
,
3
)
;
}
}
三.总结与随笔
(1)entity层:只有属性没有方法,主要用于数据跨层传输
(2)同一块作用域,局部变量优先于成员变量。
(3)char 类型可以' + ', ' - '
(4)方法传参:基本类型传值,函数内改变参数值对函数外无影响。引用类型传引用,函数内改变参数值对函数外有影响。
(5)删掉set方法,private修饰的成员变量只读
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。