面向对象(封装,继承,多态)

本文详细探讨了面向对象编程的三大核心特性:封装保护数据安全,通过get和set方法控制访问;继承实现代码复用,构造方法初始化对象;多态提升灵活性,理解类与对象的关系。同时比较了Java与Scala的异同,以及介绍了基本的字面量和编程概念。
摘要由CSDN通过智能技术生成

面向对象oop

面向对象的三大特点(封装,继承,多态)

封装:代码不能任意修改,增强代码的安装性。

封装的原则是:将属性隐藏起来,若想要访问类中的某个属性,提供公共的访问方法对其访问。

封装的步骤:

		1. private关键字来修饰(私有的修饰符)成员变量(也叫成员属性)
		2. 对需要访问的成员变量提供get()和set()方法,注解:get是取值,set是赋值

封装时的权限控制符区别如下:

privatedefaultprotectedpublic
同一类中
同一包中
子类
全局范围

private的含义:
1.private是一个权限修饰符,代表最小的访问修饰符
2. 可以修饰成员变量(即全局属性),也可以修饰成员方法
3. 被private修饰的成员变量和成员方法只能在本类中访问
private的使用格式:
private 数据类型 变量名
封装的优势:

  1. 良好的技能,减少代码之间的耦合行
  2. 类内部的结构可以随意更改
  3. 可以对全局属性(即成员变量)进行更精确的控制
  4. 隐藏信息,实现细节
    (对内隐藏信息,对外提供公共的使用方法)

封装优化1:

set()方法中形参名字不符合标识符的命名规范(见名知意),若修改成和成员变量相同的名字会触发java程序当中的就近原则,把方法内的变量变为形参,导致赋值失败,可以采用【this】关键字解决变量重名的问题
this:
this代表所在类的当前对象的引用(地址值),即对象对自己引用
方法被哪个对象调用,方法中的this指代的就代表的是哪个对象,即被谁调用,this就是谁
this的使用格式:
this.成员变量名

package example;

public class fengzhuang {
    //1. 使用private修饰成员变量
    private String name;
    private int age;
    //2.提供get和set方法,可以访问类中的成员变量,先写get再写set
    //get获取类中的成员变量信息,
    public String getName(){
        return name;
    }
    //set设置类中的成员变量
    public void setName(String name){
        this.name = name;
    }
    public int getAge(){
        return age;
    }
    public void setAge(int age){
        age = age;
    }
}

使用this关键字修饰方法当中的成员变量,解决成员变量被隐藏的问题

封装优化2——构造方法:

  1. 当一个对象被创建的时候,构造方法用来初始化对象,给对象的成员变量赋初始值,
    备注:构造方法可以不写,因为无论封装是否在封装类里定义构造方法,当类被定义出来时,系统会自动分配一个构造方法——无参构造方法,一旦在类中显示的定义构造方法java自动提供的默认无参构造就会被自动销毁(被回收)。

  2. 构造方法的定义格式:
    修饰符 构造方法名(参数列表){
    //方法体内容
    }
    //构造方法没有返回值,构造方法名要和类名保持完全一致
    注意事项:

    1. 构造方法的方法名必须要与类名保持一致
    2. 构造不用声明返回值类型,连void也不需要
    3. 构造中不能用return返回一个具体的值
    4. 定义类时无显示的定义构造方法,系统会自动给一个无参构造方法
    5. 一旦定义了构造方法,编译器会回收提供的隐式构造方法
    6. 构造方法可以重载,方法名相同,参数列表相同

继承:

多态:

具有相同的特点(属性)和行为(方法)的集合的总称

对象

是某一类事物具体的体现(实例),将类的抽象【概念具体化

属性

是一类事物的特点或特征

方法

是一类事物可以进行的行为或动作(方法的命名遵循驼峰方法,首字母小写,其余单词首字母大写)

[访问修饰符] 返回值类型 方法名(参数){…【方法内执行的语句】}
返回值类型:该方法执行后的结果的数据类型
基本数据类型/引用数据类型(int float double/string Array)
void 空,方法执行后,不返回任何数据
如果方法需要返回值
1. 需要在返回值类型处写上需要返回数据所对应的数据类型
2. 在方法体的最后需要使用return值的格式,将值明确返回
参数列表:
1. 形式参数:该方法执行可能会用到的数据
2. 形式参数的写法:数据类型,参数名
3. 列表内可写多个参数,也可不写
4. 有参数时,在使用方法时要调用,必须给参数先赋值
{}方法体
方法功能的具体体现:

无返回值,无参数

无返回值,有参数

有返回值,无参数

有返回值,有参数

两个引用指向一个对象,s1是对象名,也是变量,可以叫做对象的引用
s1应用的是内存中,堆内存中的对象的地址值,
student s2=s1,将s1的地址值赋值(引用)给s2,所以s1与s2操作的是同一个对象

定义位置作用范围初始值在内存中的存储位置生命周期修饰符
成员变量类中,方法外类中有默认值堆内存随着对象的创建而存在,对象消失就消失可使用修饰符
局部变量方法中或方法声明上(形式参数)方法中无默认值, 必须先定义赋值再引用栈内存随着方法的调用而存在,调用结束就消失不使用修饰符

java与scala的异同:

相同

同样具有与java一样的基本数据类型:byte,short,int,long,chart,float,double,string,boolean,

不同

不同的是:scala定义的这些基本数据类型都是类,例如Int类型是scala.int类;string类型没有自己定义类,完全使用java里java.Lang.String下的String类。

字面量

例子:

val i=123//123是整数字面量
val i=3.14//3.14是浮点字面量
val i=true//布尔字面量
val i='A'//字符字面量
val i="hello"//字符串字面量

注意:

在scala中,可以使用加(+),减(-),乘(*),除(/)等操作符,而且操作符就是方法,例如,5+3就等同于5.+(3)
eg. a 方法 b 等同于 a.方法(b)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值