java类和对象之访问权限,(四)面向对象编程与JAVA访问权限控制

一、面向对象编程

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 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 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](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](https://www.cnblogs.com/hi-wanghong/p/9741494.html%20%20%20)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值