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小时内删除。