Java学习笔记3

 
======================================================================

======================================================================
第三天: 面向对象   [
]
======================================================================
1)继承: 为什么? 继承不是为了代码重用
.
面相对象: 对象是: 客观存在的事物: 有什么: [属性] 能做什么: [方法
].
对象和对象组合.彼此调用互相的方法来构造一个大系统
.
我是这样理解的: 也就是组件化模式.组件也就是一个对象.如果要完成一件任务,要找到一个解决这个问题的方法,也就是
public void print(){
System.out.pirntln();
}
适合这个问题的方法(对象
)
例子: 任务: 从北京--天津

第一步: 找一个交通工具,[走路,骑车,汽车,火车,飞机] -----就是找到适合这个问题组件,这个组件不一定是自己写的,但如果没有这个组件,我们可以自己写.
这样有些代码可以用别人写的代码,来解决自己的问题.这样可以在别人的代码基础上来提高开发效率.也就是站在别人的肩膀上[继续开发.].就像一辆汽车[组件]不是你制造的但是你能够用他来带你去其他地方[帮你解决问题
].

面相对象的特点: 允许我们用解决现实问题的方法,来解决计算机问题
.
面相对象的好处: 让一个对象简单,各司其职/个尽所能.简单对象拼装成大系统. 为什么要让一个对象执行一个尽量简单的工作.因为专才能精
.

对象和对象之间要存在弱藕合状态. //接口一样.标准 :防止垄断.先找有没有对象能解决我这个问题.如果没有则自己开发一个组件.自己的组件和别人的组件结合起来,来解决实际的问题。


可重用性: 这个代码能够让其他的程序用到。
可扩展性: 继承,子类继承父类的所有属性和方法,然后根据实际情况来扩展自己的方法和属性,以适应实际的环境。

面向对象: 该重用的重用,该自己写的自己写,然后在拼装成一个系统.

面向对象: 先有数据结构,后有算法
.
面向过程: 先有算法,后有数据结构
.

,模板,类是对象的抽象
.
在编程中,类是对象的模板
.
=====================================================================
(2)
实例变量
:
在类体里定义的变量[属性]一个属性其实是一个实例变量在[任何方法外
].
实例变量有默认值
:
在方法里定义的是局部变量,作用范围[定义这个变量的代码块
]
例子
:
class ClassA {

       int a = 10; // 局部变量才要先赋值,后使用.而实例变量可以不给默认值.

       public void print() {

              int a = 10; // 两个局部变量才会出现命名冲突.一个实例变量和一个局部变量不会命名冲突.

              System.out.println(a); // 然后局部优先.

       }

}
======================================================================
(3) OverLoad(
重载) :

编译时多态. 方法名相同参数表不同.返回值没有限制;编译时就决定,了调用了哪个方法.
有什么用: 调用者负责给参数,编译器负责调用哪个函数,//这样适合各司其职的特性
.
//
屏蔽由于参数的不同而造成的差异
.
public class Test{

       public static void main(String args){

              ClassA a=new ClassA();  // 向上就近匹配.

       }

}

public class ClassA{

       public void print(){

              System.out.pirntln();

}

public void print(short,short){

              System.out.pirntln();

}

public void print(byte,byte){ //

              System.out.pirntln();

}

public void print(short,byte){ // 此时编译不通过.因为编译器分不清楚调用哪个函数.

              System.out.pirntln();

}

public void print(byte,short){

              System.out.pirntln();

}

}

======================================================================
(3)
构造方法

1.
初始化属性.
2.
打开网络联接.对象的构造过程

1.
分配空间.int a=0; 堆空间(存放对象,连续的存储区域,属性) //(卵着床).
2.
初始化属性, int a=10;  //(10月怀胎
)
3.
调用一个构造方法. 只在构造的时候被调用一次.(婴儿剪脐带) //最好主动加上构造方法
.
3.
构造方法可以重载
.
(4)
对象变量 (引用)
ClassA a=new ClassA(); //a是一个对象变量(引用);
简单变量存储一个变量

对象变量存储一个对象的指针因此可以这样写: ClassA c=null; //c里面装的地址.(叫做引用)
 
c=new ClassA();
(5) 对象和引用的关系: (出自--Java In Thinking)
如果我们说: 一个对象是一个电视机,引用是一个遥控器. 我们通过遥控器访问电视机. 例子:
ClassA c=null;
c=new ClassA(); //通过new 来构造一个对象.
ClassA c2=c;  //c2 c 指向同一个对象.
//
引用有引用的类型,可以两个遥控器可以同时访问一个电视机. 对象有对象的类型
.
//java
中的属性默认是public
.
(6)
传值/传引用.

int a=0;
ClassA s=new Class();
s.method(a); //
此时这里的a 没有变,传的是值。    
//[
基本类型,传值,对象类型传引用
]
student b=new student();//引用会改变他的值。
s.method(b.age); //此时age会变化. 因为b是一个地址.传的是引用.  //[对象类型,传引用]
class ClassA{
    void method(a){
      a++;
    }
}
class student{
    int age=10;
}
(7) this 关键字.
作用:

  1. this. //是当前的对象的引用
  2. this. 来区分实例变量和局部变量.
例如:

int a=0;
void pirnt(){
  int a=0;
   System.out.println(this.a); //用来指向实例变量a,而不是此时的局部变量a.[屏蔽局部优先原则.]
}
3.
用在构造方法里.
例子
:
public ClassA{

       ClassA(){

              System.out.println("ClassA()");

       }

}

public ClassA(int a){

       ClassA(); // 不能这样调用.

              this(); // 调用本类中其他的构造方法. 此时是无参的 //this() 必需是本类的第一个语句.放在后边不行.

}

---->属性
方法  -->声明/实现->重载.
构造方法
:
构造过程
: new
引用: 传值/传引用
;
this. 2
中的方法.1,在构造函数外面用,2,在构造函数中用,用来初始化属性,区分形参和属性。

(8)
修饰符:
同一类同一包子类外部程序

Private

V

X

X

X

Protected

V

V

V

X

Default

V

V

X

X

Public

V

V

V

V

 


======================================================================
1 )继承 : 为什么 ? 继承不是为了代码重用 .
面相对象 : 对象是 : 客观存在的事物 : 有什么 : [ 属性 ] 能做什么 : [ 方法 ].
对象和对象组合 . 彼此调用互相的方法来构造一个大系统 .
我是这样理解的 : 也就是组件化模式 . 组件也就是一个对象 . 如果要完成一件任务 , 要找到一个解决这个问题的方法 , 也就是 public void print(){
System.out.pirntln();
}
适合这个问题的方法 ( 对象 )
例子 : 任务 : 从北京 -- 天津
第一步 : 找一个交通工具 ,[ 走路 , 骑车 , 汽车 , 火车 , 飞机 ] ----- 就是找到适合这个问题组件 , 这个组件不一定是自己写的 , 但如果没有这个组件 , 我们可以自己写 .
这样有些代码可以用别人写的代码 , 来解决自己的问题 . 这样可以在别人的代码基础上来提高开发效率 . 也就是站在别人的肩膀上 [ 继续开发 .]. 就像一辆汽车 [ 组件 ] 不是你制造的但是你能够用他来带你去其他地方 [ 帮你解决问题 ].

面相对象的特点 : 允许我们用解决现实问题的方法 , 来解决计算机问题 .
面相对象的好处 : 让一个对象简单 , 各司其职 / 个尽所能 . 简单对象拼装成大系统 . 为什么要让一个对象执行一个尽量简单的工作 . 因为专才能精 .

对象和对象之间要存在弱藕合状态 . // 接口一样 . 标准 : 防止垄断 . 先找有没有对象能解决我这个问题 . 如果没有则自己开发一个组件 . 自己的组件和别人的组件结合起来,来解决实际的问题。

可重用性 : 这个代码能够让其他的程序用到。
可扩展性 : 继承,子类继承父类的所有属性和方法,然后根据实际情况来扩展自己的方法和属性,以适应实际的环境。

面向对象 : 该重用的重用 , 该自己写的自己写 , 然后在拼装成一个系统 .

面向对象 : 先有数据结构 , 后有算法 .
面向过程 : 先有算法 , 后有数据结构 .

, 模板 , 类是对象的抽象 .
在编程中 , 类是对象的模板 .
=====================================================================
(2)
实例变量 :
在类体里定义的变量 [ 属性 ] 一个属性其实是一个实例变量在 [ 任何方法外 ].
实例变量有默认值 :
在方法里定义的是局部变量 , 作用范围 [ 定义这个变量的代码块 ]
例子 :
class ClassA {
       int a = 10; // 局部变量才要先赋值 , 后使用 . 而实例变量可以不给默认值 .
       public void print() {
              int a = 10; // 两个局部变量才会出现命名冲突 . 一个实例变量和一个局部变量不会命名冲突 .
              System. out .println(a); // 然后局部优先 .
       }
}
======================================================================
(3) OverLoad( 重载) :
编译时多态. 方法名相同参数表不同.返回值没有限制;编译时就决定,了调用了哪个方法.
有什么用: 调用者负责给参数,编译器负责调用哪个函数,//这样适合各司其职的特性.
//屏蔽由于参数的不同而造成的差异.
public class Test{
       public static void main(String args){
              ClassA a= new ClassA();   // 向上就近匹配 .
       }
}
public class ClassA{
       public void print(){
              System.out.pirntln();
}
public void print( short , short ){
              System.out.pirntln();
}
public void print( byte , byte ){ //
              System.out.pirntln();
}
public void print( short , byte ){ // 此时编译不通过 . 因为编译器分不清楚调用哪个函数 .
              System.out.pirntln();
}
public void print( byte , short ){
              System.out.pirntln();
}
}
======================================================================
(3) 构造方法
1.初始化属性.
2.打开网络联接.对象的构造过程
1. 分配空间.int a=0; 堆空间(存放对象,连续的存储区域,属性) //(卵着床).
2. 初始化属性, int a=10;  //(10月怀胎)
3. 调用一个构造方法. 只在构造的时候被调用一次.(婴儿剪脐带) //最好主动加上构造方法.
3. 构造方法可以重载.
(4) 对象变量 ( 引用)ClassA a=new ClassA(); //a是一个对象变量(引用);
简单变量存储一个变量
对象变量存储一个对象的指针因此可以这样写: ClassA c=null; //c里面装的地址.(叫做引用)
  c=new ClassA();
(5) 对象和引用的关系: (出自--Java In Thinking)如果我们说: 一个对象是一个电视机,引用是一个遥控器. 我们通过遥控器访问电视机. 例子: ClassA c=null;
c=new ClassA(); //通过new 来构造一个对象.
ClassA c2=c;  //c2 和 c 指向同一个对象.
//引用有引用的类型,可以两个遥控器可以同时访问一个电视机. 对象有对象的类型.
//java中的属性默认是public 的.
(6) 传值/传引用.
 
int a=0;
ClassA s=new Class();
s.method(a); //
此时这里的 a 没有变,传的是值。   
//[基本类型,传值,对象类型传引用]
student b=new student();// 引用会改变他的值。
s.method(b.age); //此时age会变化. 因为b是一个地址.传的是引用.  //[对象类型,传引用]
class ClassA{
    void method(a){
      a++;
    }
}
class student{
    int age=10;
}
(7) this 关键字.作用:
   1. this. //是当前的对象的引用
   2. 用this. 来区分实例变量和局部变量.
例如:
int a=0;
void pirnt(){
   int a=0;
    System.out.println(this.a); //用来指向实例变量a,而不是此时的局部变量a.[屏蔽局部优先原则.]
}
3.用在构造方法里.
例子:
public ClassA{
       ClassA(){
              System.out.println( "ClassA()" );
       }
}
public ClassA( int a){
       ClassA(); // 不能这样调用 .
              this (); // 调用本类中其他的构造方法 . 此时是无参的 //this() 必需是本类的第一个语句 . 放在后边不行 .
}
类---->属性
方法  -->声明/实现->重载.
构造方法:
构造过程: new
引用: 传值/传引用;
this. 2中的方法.1,在构造函数外面用,2,在构造函数中用,用来初始化属性,区分形参和属性。
(8) 修饰符:
同一类同一包子类外部程序
Private
V
X
X
X
Protected
V
V
V
X
Default
V
V
X
X
Public
V
V
V
V
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

炼丹狮

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

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

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

打赏作者

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

抵扣说明:

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

余额充值