day07【面向对象基础--中】

11 篇文章 0 订阅
10 篇文章 0 订阅

day07【面向对象基础–中】

封装

高内聚:类的内部数据操作细节自己完成,不允许外部干涉。

低耦合:仅对外暴露少量的方法用于使用

如何实现封装

使用权限修饰符来控制:边界有

类,包,子类,模块(Java9之后引入)

权限修饰符:

修饰符本类本包其他包子类其他包非子类其他模块
private××××
缺省×××
protected××
public默认不可以,可以建立依赖

成员变量/属性私有化问题

成员变量私有化之后,提供标准的get/set方法,这种成员变量也称为属性,

只要能通过get/set操作的就是事物的属性,哪怕没有对应的成员变量

实现步骤

使用 private 修饰成员变量

private 数据类型 变量名;

提供 get/set 方法

public class chinese{
    private static String country;
    private String name;
    private int age;
    private boolean marry;
    
    public static void setCountry(String c){
        country = c;
    }
    public static void getCountry(){
        return country;
    }
}

局部变量与成员变量同名

当局部变量与类变量(静态成员变量)同名时,在类变量面前加类名.

当局部变量与实例变量(非静态成员变量)同名时,在实例变量面前加**“this.”**

构造器

构造器的作用

在创建对象的时候为实例变量赋初始值

造器又称为构造方法,那是因为它长的很像方法。但是和方法还有有所区别的。

【修饰符】 构造器名(){
    // 实例初始化代码
}
【修饰符】 构造器名(参数列表){
	// 实例初始化代码
}

当一个类有带参构造方法后,一定要给出一个无参构造方法。方便这类被继承。
子类可以继承父类所有属性和方法,构造方法不能继承。
子类也可以拥有自己的属性和方法,创建对象之后,这些属性和方法都可以正常使用。
调用父类无参的构造方法。java语法规定,子类必须在自己构造方法的第一行调用父类的构造方法。
如果父类有多个构造方法,那么调用哪个都行。
super();// 在没有显示写出任何一句调用父类构造方法的时候,将默认隐示调用父类无参的构造方法。
调用的是谁的方法,访问的就是谁属性,方法访问属性就近原则。
当调用一个方法的时候,方法需要访问属性,会先从本类开始搜索属性,找到后访问。
如果方法访问的时候找不到对应的属性,会向父类中搜索对应属性。

继承

通过 extends 关键字,可以声明一个子类继承另外一个父类,定义格式如下:

【修饰符】 class 父类 {
	...
}

【修饰符】 class 子类 extends 父类 {
	...
}

子类可以继承父类所有属性和方法,构造方法不能继承。
子类也可以拥有自己的属性和方法,创建对象之后,这些属性和方法都可以正常使用。

构造方法

构造方法:

长相特殊,跟类同名,并且没有返回类型
构造方法只能在创建对象的时候调用且仅能调用一次

当一个类中没有显示的构造方法的时候,会自动配备一个默认无参的构造方法。
如果类中出现任何一个显示的构造方法,那么这个默认无参的构造方法就消失了。

方法重载

在同一个类中,方法名相同,参数组不同。(参数组的不同包含:参数类型不一致,参数个数不一致,参数顺序不一致)

局部变量可以和属性重名,局部变量拥有更高的优先级。
在局部变量和属性重名的情况下,使用this.的就是属性。

调用父类无参的构造方法

// 当一个类有带参构造方法后,一定要给出一个无参构造方法。方便这类被继承。
public Pet(){

}

java语法规定,子类必须在自己构造方法的第一行调用父类的构造方法。
如果父类有多个构造方法,那么调用哪个都行。

在没有显示写出任何一句调用父类构造方法的时候,将默认隐示调用父类无参的构造方法。
调用的是谁的方法,访问的就是谁属性,方法访问属性就近原则。

当调用一个方法的时候,方法需要访问属性,会先从本类开始搜索属性,找到后访问。

如果方法访问的时候找不到对应的属性,会向父类中搜索对应属性。

方法重写

方法重写需要在父子类中,子类编写一个和父类一模一样的方法(方法名和参数组完全一致)
方法重写是一个方法,子类重写了父类的方法,那么以后再调用的都是子类的方法。

必须在子类的方法中使用super关键字调用已经被重写的父类的方法。

如果子类重写过父类的方法,那么子类对象调用出来的一定是子类的方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值