一、面向对象编程
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(); } }
对一个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
原文:https://www.cnblogs.com/jianguan/p/14476263.html