第三章.java的面向过程和面向对象的设计思想(4)

第三章.java的面向过程和面向对象的设计思想(4),第1张

第三章.java的面向过程和面向对象的设计思想(4)

1.包

概念:为了更好的组织类,区别于类名的一个命名空间

包的命名特点:
一般情况下为小写字母,可通过.号来区分包的级别:

第一级 指该项目的类型,如com,org,gov等,

第二级 指项目所开发或者运行的公司名称,如:oracle,sun,huawei 等

第三级 指项目的名称,如:bcms,oa,erp,cms等

第四级 指项目模块的名称,如:bean,action,exception。

作用:

防止与类名发生重复

可按照不同功能去管理类

控制访问权限(主要通过访问权限修饰符来实现)

2.访问权限修饰符

2.1public

公共的,可修饰类,方法,成员变量,内部类

在不同包不同类中都可以访问到。

2.2private

私有的,可修饰方法,属性,内部类,常用于封装。

只能在本类中被访问。

2.3protected

受保护的,可修饰方法,属性,内部类

可以在同包中被访问,如果不是同包,被子类继承同样可以被访问

2.4default

默认的,可修饰类,方法,属性,内部类

可以在同包的类进行访问。

//面向对象的三大特征:封装,继承,多肽

3.封装

3.1概念:利用各种访问权限修饰符,对类的一些不安全属性进行私有化隐藏在类的内部,使在外部无法完成对其访问,但可以通过固定方法完成对其的访问,达到即安全又合法的目的

3.2特点:

可通过固定法完成对其的访问

实现了隐藏类的细节

方便加入控制语句

3.3例如:可通过固定法完成对其的访问

public class Anmals {
    private  String name;
    private int age=13;
public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name =name;
    }
}
public static void main(String[] args) {
        Text text=new Text();
        text.setName("输入你想获取的名字");
        System.out.println(text.getName());

通过这种方式就可以获取隐藏的属性

3.4单例模式

模式是指由前人总结而成对某一问题解决的模板。

单例模式指的是让一个类在一个程序中只能创建一个对象。

具体步骤为:将构造方法私有化,使其在其他类中不能随便创建对象

public class GuanJian {
 private static GuanJian guanjian=null;
//定义一个GuanJian型的变量
    private GuanJian(){

    }
    //将构it造方法私有
    public static GuanJian getGuanjian (){
//确保只创建一个对象
        if(guanjian==null){
            guanjian=new GuanJian();
            return guanjian;
        }
        return guanjian;
    }
//检测是否成功创建出对象
    public static void main(String[] args) {
        System.out.println(GuanJian.getGuanjian());
        System.out.println(GuanJian.getGuanjian());
    }
}

4.继承

4.1概念:

作用为:子承父类,实现代码的重复利用,提高扩展性。

格式为:

public class Text extends Dog

Text为子类,Dog为父类;

当子类与父类符合 is-a的关系,例如狗是动物的时候,子类就可以继承父类。

4.2特点:

使用extends关键字,一个类只能直接继承一个父类。

继承父类后就可以继承父类中非私有的属性,方法

继承具有传递性,如果C继承B,B继承A,那么C就可以继承A,B中的非私有方法和属性

当一个类中没有继承父类的话,那么这个类默认继承object类

object类是所有类的子类;

public class Dog extends Anmals
public class Text extends Dog

4.3继承中的构造方法

在继承中,创建子类对象时,会自动调用构造方法,从上往下依次调用,先初始化父类属性,再初始化子类属性。

public class Text extends Dog {
    public Text(){
        super();
        System.out.println("text无参构造方法啊");
    }
    public static void main(String[] args) {
        Text text=new Text();
        text.getAge();
        text.getName();
        text.play();
    }
}

 

使用super()在子类构造方法的第一行,表示对父类构造方法的调用,不写也会默认存在,如果写的话必须写在第一行;

4.4方法的重写

当父类的方法实现不能满足子类的需求时,子类可以进行重写(覆盖);

具体的语法:

方法名相同,参数列表相同,返回值相同,当然两者都可以没有返回值,但需要一致,

访问权限可以扩大,但不可以缩小,例如:

public class Anmals {
protected void play() {
        System.out.println("Aniamls在玩");
    }
}
public class Dog extends Anmals{
public void play(){
            System.out.println("狗在天上玩");
        }
}

@Override:提供注释标签,表示在父类中重写过来的,如果重写语法出现错误,那么@Override就会出现报错,一般@Override写在重写语法的上端。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5162878.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-18
下一篇 2022-11-18

发表评论

登录后才能评论

评论列表(0条)

保存