Java 封装和继承

面向对象编程的三大特性:封装、继承、多态

第一个:封装

封装:体现保护性和易用性,必须通过类对外提供的方法(其实方法在c语言里面就是函数,但是老师讲在java学习中要忘记C)来操作该属性。

1.使用 private 关键字来实现属性的封装,在类中当属性被private修饰后,该属性只能在当前类内部可用 出了这个类对其他类隐藏。一般类中成员变量都应该使用private进行封装,然后使用getter 和 setter 来操作成员变量,getter和setter是根据实际情况来断定的,getter是获取某些属性值,setter是修改属性值。在实际操作过程中使用Alt+Insert 快捷构建getter和setter方法。

package Oop;

public class Computer {
    private class Test{}
    private String CPU;
    private String memory;
    private String disk;
    private String screen;

    public Computer(String CPU, String memory, String disk, String screen) {
        this.CPU = CPU;
        this.memory = memory;
        this.disk = disk;
        this.screen = screen;
    }

    public String getDisk() {
        return disk;
    }

    public String getScreen() {
        return screen;
    }

    public void setCPU(String CPU) {this.CPU = CPU;}

    public void setMemory(String memory) {
        this.memory = memory;
    }

    public void setDisk(String disk) {
        this.disk = disk;
    }

    public void setScreen(String screen) {
        this.screen = screen;
    }
}

2.再谈访问权限 Java中有四个关于权限的关键字,已从权限从小到大,private(当前类的内部可见)<default(不需要自己写,默认访问权限)包(文件夹)访问权限,当前包的内部可见(子包都不可见)<protected(继承访问权限)在不同包的父子类之间可见<public(公共访问权限),只要是public权限,随意使用,完全公开。下面会详细讲述 包 (default)其实在实际操作中不写(default)系统会默认就是包访问权限;

a.包访问权限,在Java中类的全名称是 包名.类名,一个类使用package关键字来表示当前类属于那个包。

 

正是因为有包的访问权限存在,可以在不同的包中创建同名的类,包就是文件夹。

b. 包的导入,使用关键子import,在java中最常使用的包是 util 包,标准写法是:java.util.具体包:表示java提供工具开发包。实际为了方便在使用中不用导入具体包 直接写java.util.*,系统会自己导包要使用的具体包对应的具体类,不使用的不会导入整个包。

例外:因为util包和sql包中都含有Date这个工具包,所以在同时都要使用时,创建对象要使用时要写全称。java.util.Date date=new java.util.Date();

c.包的访问权限:同一个包中可见,仅限于当前这个包中的所有类之间可见,其他包(包括子包都不行),就是一个包中,只能在自己包下面创建的所有源文件可以使用,在当钱包下面创建的子包都不能使用。包的命名权限是:全部小写,多个单词中间用_分割开。类的命名权限是:大驼峰

第二个:继承

1.将若干个不同的类之间相同的属性和方法抽象为一个共同的父类,子类只需要扩展自己类中独有的属性和方法。作用简单来说就是为了防止重复代码                                                                      要使用继承,能发生继承的类之间必须满足is a 的原则!!!!

2.java中使用extends表示继承一个父类,子类会继承所有属性和行为,子类只关心自己独有的属性和行为。

继承的使用规则:在Java中,类的继承是单继承,一个类中只能使用extends关键字继承一个父类。(Java中不允许多重继承,但允许多层继承,不超过三层,不推荐)

下面这个例子:Animal就是父类,Dog和Cat 就是子类

public class Dog extends Animal{
    public void bark(){
        System.out.println("汪汪汪");
    }
public class Cat extends Animal{
    public void miao(){
        System.out.println("喵喵喵");

package inherit;

/**
 * 父类
 */
public class Animal {
    String name;
    int age;
    double weight;

    void sleep(){
        System.out.println(this.name+"正在睡觉");
    }

    void eat(String food){
        System.out.println(this.name+"正在吃"+food);
    }
}

3.继承中的隐式继承和显式继承

隐式继承:父类中的某些属性和方法,子类继承下来,但是无法直接使用  用private

显示继承:随心所欲使用                                                                              用public

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值