java ⾯向对象笔记
1.类和对象的定义格式
2.封装类的定义:class 类名称{属性名称;返回值类型 ⽅法名称(){}}//对象的定义://⼀个类要想真正的进⾏操作,则必须依靠对象,对象的定义格式如下://类名称 对象名称 = new 类名称() ;//如果要想访问类中的属性或⽅法(⽅法的定义),则可以依靠以下的语法形式://访问类中的属性:对象.属性 ;//调⽤类中的⽅法:对象.⽅法();//在java 中对象声明有两种含义//声明对象://表⽰声明了⼀个对象,但是此对象⽆法使⽤,horse 没有具体的内存指向User user = null ; // 表⽰实例化了对象,可以使⽤实例化对象:user = new User () ;user .eat (); //通过对象调⽤⽅法new User ().eat ();//匿名对象调⽤⽅法
1
2
3
4
5
6
7
8
9
10
11
java面向对象的特征有哪些方面12
13
14
15
16
17
18
19
20
21
22
23
3 构造⽅法封装性的概念封装性是⾯向对象思想的三⼤特征之⼀,封装就是隐藏实现细节,仅对外提供访问接⼝。实现细节部份包装、隐藏起来的⽅法。封装有:属性的封装、⽅法的封装、类的封装、组件的封装、模块化封装、系统级封装…封装的好处:模块化、信息隐藏、代码重⽤、插件化易于调试、具有安全性封装的缺点:会影响执⾏效率封装之前:属性都可以直接访问和修改class Person{ String name; int age;}封装之后:class Person{ //属性是成员变量,私有化属性,使得其他对象不能直接访问属性 private String name; private int age; //参数及⽅法内定义的变量是局部变量 public voi
d setName(String name){ this.name = name;} public String getName(){ return name;}}成员变量和局部变量的区别a 、在类中的位置不同成员变量:在类中定义局部变量:在⽅法中定义或者⽅法的参数b 、在内存中的位置不同成员变量:在堆内存(成员变量属于对象,对象进堆内存)局部变量:在栈内存(局部变量属于⽅法,⽅法进栈内存)c 、⽣命周期不同成员变量:随着对象的创建⽽存在,随着对象的销毁⽽消失局部变量:随着⽅法的调⽤⽽存在,随着⽅法的调⽤完毕⽽消失d 、初始化值不同成员变量:有默认初始化值,引⽤类型默认为null 局部变量:没有默认初始化值,必须定义,赋值,然后才能使⽤注意:
局部变量名称可以和成员变量名称⼀样,在⽅法中使⽤的时候,采⽤的是就近原则。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
4. this 关键字⽆参构造⽅法:public Dog (){} //如果⼀个类没有定义构造⽅法,则默认⽆⽆参构造,如果有定义有参构造,最好再显⽰定义⼀个⽆参构造⽅法带参构造⽅法:public Dog (String name ){this .name = name ;}多参构造⽅法:public Dog (String name ,int age ){this .name = name ;this .age = age ;}(1)构造⽅法名称与类名相同,没有返回值声明(包括 void )(2)构造⽅法⽤于初始化数据(属性)(3)每⼀个类中都会有⼀个默认的⽆参的构造⽅法(4)如果类中有显⽰的构造⽅法,那么默认构造⽅法将⽆效(5)如果有显⽰的构造⽅法,还想保留默认构造 ⽅法,需要显⽰的写出来。(6)构造⽅法可以有多个,但参数不⼀样,称为构造⽅法的重载(7)在构造⽅法中调⽤另⼀个构造⽅法,使⽤this (...),该句代码必须在第⼀句。(8)构造⽅法之间的调⽤,必须要有出⼝。(9)给对象初始化数据可以使⽤构造⽅法或setter ⽅法,通常情况下,两者都会保留。(10)⼀个好的编程习惯是要保留默认的构造⽅法。(为了⽅便⼀些框架代码使⽤反射来创建对象)
(11)private Dog (){},构造⽅法私有化,当我们的需求是为了 保正该类只有⼀个对象时(单例模式就是私有化构造器)。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25this 关键字指向的是当前对象的引⽤调⽤类中的属性:this .属性名称,指的是访问类中的成员变量,
⽤来区分成员变量和局部变量(重名问题)调⽤类中的⽅法:this .⽅法名称,⽤来访问本类的成员⽅法调⽤类构造⽅法:this ();访问本类的构造⽅法,()中可以有参数的 如果有参数 就是调⽤指定的有参构造注意:1.this () 不能使⽤在普通⽅法中,只能写在构造⽅法中2.必须是构造⽅法中的第⼀条语句⾯向对象和构造⽅法中使⽤this :Cat 类:public class Cat { private String name ; private String age ; //⽆参构造函数 public Cat () { this ("aaaa"); System .out .println ("这是⽆参构造"); } //有参构造函数 public Cat (String name ,String age ) { //调⽤⽆参构造函数 this (); System .out .println ("这是有参构造函数"); } //构造函数重载:有参构造函数() public Cat (String name ) { //调⽤⽆参构造函数 System .out .println ("被⽆参构造调⽤了"); } //静态代码块 static { System .out .println ("这是静态代码块"); } //普通代码块
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
5. static 关键字
6.继承 //普通代码块 { System .out .println ("这是普通代码块"); } public void eat () { this .run
(); System .out .println ("吃饭"); } public void run () { System .out .println ("⼩猫快跑"); }}测试⽅法: public static void main (String [] args ) { // TODO Auto-generated method stub Cat cat =new Cat ("阿黄","14"); cat .eat ();// 执⾏流程:// 这是静态代码块// 这是普通代码块// 被⽆参构造调⽤了// 这是⽆参构造// 这是有参构造函数// ⼩猫快跑// 吃饭 }
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68static 关键字的作⽤:⽅便在没有创建对象的情况下来进⾏调⽤(⽅法/变量)。a 、使⽤static 关键字修饰⼀个属性:声明为static 的变量实质上就是全局变量b 、使⽤static 关键字修饰⼀个⽅法:在⼀个类中定义⼀个⽅法为static ,那就是说,⽆需本类的对象即可调⽤此⽅法(类调⽤)c 、使⽤static 关键字修饰⼀个类(内部类):声明为static 的⽅法有以下⼏条限制: 它们仅能调⽤其他的static ⽅法,反过来是可以的。 它们只能访问static 数据。 它们不能以任何⽅式引⽤this 或super 。
不允许⽤来修饰局部变量
1
2
3
4
5
6
7
8
9
7.对象初始化
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论