首页 > 编程语言 > 详细

(四)面向对象编程与JAVA访问权限控制

时间:2021-03-03 21:41:43      阅读:29      评论:0      收藏:0      [点我收藏+]

一、面向对象编程

 

Java和C++一样,是面向对象的编程语言。Java程序也是面向对象的程序,基本单位是每一个对象,每个对象包含对用户公开的特定功能部分和隐藏的实现部分。面向对象相比面向过程是更进一步对逻辑的抽象和封装。

对象的创建使用new关键字,例如    Date date = new Date()     即:类名  对象引用名 = new 类的构造器,然后就可以使用这个对象引用名来对这个对象进行操作

下面是一个新建的Lady类的代码,测试Lady对象的创建和使用:

技术分享图片
package chapter4;

/*用import语句引用类库其他包中的类,如果这里没有Import语句,程序中所有要使用这些类的地方就需要使用完整的包路径+类名
  如所有的ArrayList  就都要替换为  java.util.ArrayList
  可以使用 * 指定某个包中所有的类  如java.util.*   就导入了java.util包中所有的类
  */
import java.util.*;
import java.util.List;

/**
 * @Auther: guanjian
 * @Date: 2021/3/3 15:21
 * @Description:
 */
public class Lady {
    private String name;
    private int age;
    private int height;
    private int weight;
    ArrayList<String> hobbys;

    //构造器的名称必须和类名一致
    //无参数的构造器,如果没有构造器,类会默认拥有一个无参数的构造器,无需手动创建。但是下面有一个参数的构造器
    //在有其他构造器的情况下,这个类不再会默认拥有一个无参构造器,要使用无参构造器,必须手动的创建一个无参构造器
    public Lady(){};

    //有参数的构造器,通过这个构造器的参数初始化对象的属性。
    public Lady(String name,int age,int heigit,int weight){
        this.name=name;
        this.age=age;
        this.height=heigit;
        this.weight=weight;
    }

    //设置姓名
    public void setName(String name){
        this.name=name;
    }

    //设置年龄
    public void setAge(int age){
        this.age=age;
    }

    //设置身高
    public void setHeight(int height){
        this.height=height;
    }

    //设置体重
    public void setWeight(int weight){
        this.weight=weight;
    }

    //设置兴趣
    public void sethobbys(ArrayList<String> hobbys){
        this.hobbys=hobbys;
    }

    //获得姓名
    public String getName(){
        return this.name;
    }

    //获得年龄
    public int getAge(){
        return this.age;
    }

    //获得身高
    public int getHeight(){
        return this.height;
    }

    //获得体直
    public int getWeight(){
        return this.weight;
    }

    //获得爱好
    public void getHobbys(){
        System.out.println("唱跳、rap和篮球,哦哦,及你太美~哦哦~");
    }

    //测试下这个Lady对象
    public static void main(String[] args) {
        Lady lady = new Lady("蔡徐坤的小迷妹",18,180,200);
        System.out.println("这位女士你好,请介绍下你自己。");
        System.out.println("我是"+lady.getName()+",年芳"+lady.getAge()+",身高"+lady.getHeight()+",体重"+lady.getWeight()+"公斤");
        System.out.println();
        System.out.println("你的爱好是什么?");
        lady.getHobbys();
    }

}
View Code

对一个Lady类的Lady对象的采访结果:

技术分享图片

Lady类的数据都用了private关键字修饰,所以这些数据只能由这个类访问,不能从外部的类的方法中直接访问,如其他的类不能通过 lady.age直接得到lady的age,只能调用lady类中访问修饰符为public的方法来获取这些数据,如  lady.getAge() 获得lady的age数据。一些功能也可以通过访问权限修饰符或隐藏或公开。

 

关于JAVA面向对象的设计思想中类与类之间的关系描述可以参考这篇博客,写的挺直观详细  https://www.cnblogs.com/liuling/archive/2013/05/03/classrelation.html

总的来说,类与类之间的关系有:继承关系(is-a/extends) 、实现关系(implements)、依赖关系(uses-a)、关联关系(frequently-uses-a)、 聚合关系(has-a/整体与局部且局部可拆解)、组合关系(contains-a/整体与局部且局部不可分割)。

其中关联关系是一种强依赖关系,而聚合关系和组合关系是关联关系中的两个特例,聚合关系就像房间和沙发的关系,组合关系就像人和人的大脑的关系。

 

Java面向对象的特性,可以把那些或简单或复杂的业务逻辑设计为 一个个的Java对象的操作和交互,把业务中的各种数据和各种业务逻辑抽象封装成 一个个类,通过各个类中封装的接口来进行业务中的数据修改和数据交互。

 

 

二、JAVA访问权限控制:public、private、protect、无访问修饰符

 

public    修饰的类、接口、变量和方法对这个类以及所有其他的类都可见

protect  修饰的变量和方法对这个类以及和这个类同一个包中的类可见,并且其他包中的子类可以继承父类中用protect修饰的变量和方法,但是其他包中的子类不可以通过父类的实例对象直接访问父类用protect修饰的变量和方法

private  修饰的内部类、变量、方法仅对这个类可见,其他类不可以直接访问

default  (无访问修饰符)修饰的类、接口、变量、方法对这个类以及和这个类同一个包中的类可见,其他包中的类不可以直接访问

(注:以上黄色标记部分是这些修饰符可以修饰的全部元素) 

对于Java的访问权限这篇博文总结的也比较全面,魔法链接:https://www.cnblogs.com/hi-wanghong/p/9741494.html

 

(四)面向对象编程与JAVA访问权限控制

原文:https://www.cnblogs.com/jianguan/p/14476263.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!