Java学习笔记3

本文深入浅出地介绍了面向对象编程的基础概念,包括继承的意义、实例变量的作用、重载的应用场景、构造方法的功能以及this关键字的用途等核心内容。
 
======================================================================

======================================================================
第三天: 面向对象   [
]
======================================================================
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 {
       inta = 10; // 局部变量才要先赋值,后使用.而实例变量可以不给默认值.
       publicvoid print() {
              int a = 10; // 两个局部变量才会出现命名冲突.一个实例变量和一个局部变量不会命名冲突.
              System.out.println(a); // 然后局部优先.
       }
}
======================================================================
(3) OverLoad(重载) :
编译时多态. 方法名相同参数表不同.返回值没有限制;编译时就决定,了调用了哪个方法.
有什么用: 调用者负责给参数,编译器负责调用哪个函数,//这样适合各司其职的特性.
//屏蔽由于参数的不同而造成的差异.
publicclass Test{
       publicstaticvoid main(String args){
              ClassA a=new ClassA();  // 向上就近匹配.
       }
}
publicclass ClassA{
       publicvoid print(){
              System.out.pirntln();
}
publicvoid print(short,short){
              System.out.pirntln();
}
publicvoid print(byte,byte){ //
              System.out.pirntln();
}
publicvoid print(short,byte){ // 此时编译不通过.因为编译器分不清楚调用哪个函数.
              System.out.pirntln();
}
publicvoid 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
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

炼丹狮

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

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

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

打赏作者

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

抵扣说明:

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

余额充值