java自学笔记5(面向对象编程)

本文深入探讨了面向对象编程的核心概念,包括类的设计、属性和方法的使用及其作用,详细解释了成员变量与局部变量的区别、类方法的实现、重载与重写的概念,以及如何利用构造器初始化类的属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.面向对象的编程关注于类的设计


2.设计类实际上就是设计类的成员


3.基本的类的成员:属性(Field)和方法(Method)


4.类的属性(成员变量)
 *   成员变量 vs 局部变量
 *   相同点:1.遵循变量声明的格式: 数据类型 变量名 = 初始化值
 *     2.都有作用域
 *   不同点:1.声明的位置的不同 :成员变量:声明在类里,方法外
 *      局部变量:声明在方法内,方法的形参部分,代码块内
 *         2.成员变量的修饰符有四个:public private protected 缺省
 *           局部变量没有修饰符,与所在的方法修饰符相同。
 *         3.初始化值:一定会有初始化值。
 *         成员变量:如果在声明的时候,不显式的赋值,那么不同数据类型会有不同的默认初始化值。
 *            byte short int long ==>0
 *            float double ==>0.0
 *            char ==>空格
 *            boolean ==>false 
 *            引用类型变量==>null
 *          局部变量:一定要显式的赋值。(局部变量没有默认初始化值)
 *         4.二者在内存中存放的位置不同:成员变量存在于堆空间中;局部变量:栈空间中
 *         
 * 总结:关于变量的分类:1)按照数据类型的不同:基本数据类型(8种)  & 引用数据类型
 *   2)按照声明的位置的不同:成员变量 & 局部变量


8.类的方法:提供某种功能的实现
 *    1)实例:public void eat(){//方法体}
 *           public String getName(){}
 *           public void setName(String n){}
 *      格式:权限修饰符 返回值类型(void:无返回值/具体的返回值) 方法名(形参){}
 *      
 *    2)关于返回值类型:void:表明此方法不需要返回值
 *       有返回值的方法:在方法的最后一定有return + 返回值类型对应的变量
 *       记忆:void 与return不可以同时出现一个方法内。像一对“冤家”。
 * 
 *  3)方法内可以调用本类的其他方法或属性,但是不能在方法内再定义方法!




9.方法的重载(overload):方法重载是让类以统一的方式处理不同类型数据的一种手段。
 * 要求:1.同一个类中 2.方法名必须相同 3.方法的参数列表不同(①参数的个数不同②参数类型不同)
 * 补充:方法的重载与方法的返回值类型没有关系!!!
 * //以下的两个方法构成重载。
public void method1(int i,String str){//属于参数类型不同

}
public void method1(String str1,int j){

}
所谓的方法重载其实际意义就是让程序在调用同名方法的时候,通过参数列表的不同可以正确的选择方法。


10.方法的重写:父类与子类之间的多态性,对父类的函数进行重新定义。


11.类作为返回值类型
//制造车(两个方法构成重载)
public Car produceCar(){
return new Car();                 //car为类  最后返回的是Car的对象
}

public Car produceCar(String n,int w){
Car c = new Car();
c.name = n;
c.wheel = w;
return c;
}






12. 匿名类对象:创建的类的对象是匿名的。
    1)当我们只需要一次调用类的对象时,我们就可以考虑使用匿名的方式创建类的对象。
    2)特点:创建的匿名类的对象只能够调用一次!
 */




13.可变个数的形参的方法:
 * 1.格式:对于方法的形参: 数据类型 ... 形参名
 * 2.可变个数的形参的方法与同名的方法之间构成重载
 * 3.可变个数的形参在调用时,个数从0开始,到无穷多个都可以。
 * 4.使用可变多个形参的方法与方法的形参使用数组是一致的。
 * 5.若方法中存在可变个数的形参,那么一定要声明在方法形参的最后。
 * 6.在一个方法中,最多声明一个可变个数的形参。
public int sum(int ... args){
int sum=0;
for(int i=0;i<args.length;i++){
sum+=args[i];
}
return sum;
}




14.方法的参数传递(重点、难点)
 * 1.形参:方法声明时,方法小括号内的参数
 *   实参:调用方法时,实际传入的参数的值
 *   
 * 2.规则:java中的参数传递机制:值传递机制
 *   1)形参是基本数据类型的:将实参的值传递给形参的基本数据类型的变量
 *   2)形参是引用数据类型的:将实参的引用类型变量的值(对应的堆空间的对象实体的首地址值)传递给形参的引用类型变量。
 *   




15.
   面向对象的特征一:封装与隐藏
 * 问题:当创建了类的对象以后,如果直接通过"对象.属性"的方式对相应的对象属性赋值的话,可能会出现不满足实际
 * 情况的意外,我们考虑不让对象来直接作用属性,而是通过"对象.方法"的形式,来控制对象对属性的访问。实际
 * 情况中,对属性的要求就可以通过方法来体现。
 * 
 * 解决的方法:(封装性的思想)①将类的属性私有化,②提供公共的方法(setter & getter)来实现调用。
 * 




16.权限修饰符:public  private  缺省  protected
 *     可以用来修饰属性、方法
 *     注:1)权限从大到小排列:public protected 缺省 private
 *        2)修饰类的权限有:public 缺省

17.类的第三个成员:构造器(constructor 构造方法)   construction  CCB  ICBC   oop
 * constructor:建造者 
 * 构造器的作用:①创建对象 ②给创建的对象的属性赋值
 * 
 * 1.设计类时,若不显式声明类的构造器的话,程序会默认提供一个空参的构造器
 * 2.一旦显式的定义类的构造器,那么默认的构造器就不再提供。
 * 3.如何声明类的构造器。格式:权限修饰符  类名(形参){ }
 * 4.类的多个构造器之间构成重载




18.类对象的属性赋值的先后顺序:①属性的默认初始化 ②属性的显式初始化③通过构造器给属性初始化
 *  ④通过"对象.方法"的方式给属性赋值




19.this关键字

1.可以用来修饰属性、方法、构造器
2.this理解为当前对象或当前正在创建的对象.


例:public void setName(String name){
this.name = name;
}


3.可以在构造器中通过“this(形参)”的方式显示的调用本类中其它重载的指定的构造器。
 *   要求:1.在构造器内部必须声明在首行!
 *       2.若一个类中有n个构造器,那么最多有n-1个构造器中使用了this(形参);


例:public Person(int age){
this.age=age;
}


public Person(int age,String name){
this(age);
this.name=name;
}






20.package:声明源文件所在的包,写在程序的第一行。
 *   每“.”一次,表示一层文件目录。
 *   包名都要小写。
 *   
 * import:
 * 1)显式导入指定包下的类或接口
 * 2)写在包的声明和源文件之间
 * 3)如果需要引入多个类或接口,那么就并列写出
 * 4)如果导入的类是java.lang包下的,如:System String Math等,就不需要显式的声明。
 * 5)理解.*的概念。比如java.util.*;
 * 6)如何处理同名类的导入。如:在util包和sql包下同时存在Date类。
 * 7)import static 表示导入指定类的static的属性或方法
 * 8)导入java.lang.*只能导入lang包下的所有类或接口,不能导入lang的子包下的类或接口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值