java是一种面向对象的语言,自然就是针对对象,所以面向对象的程序是由对象组成的。OOP表示的意思就是面向对象编程。这里就会有一些基本概念。
面向对象:现实生活中存在各种形态不同的事物,这些事物之间存在着各种各样的联系。在程序中使用对象来映射现实生活中的事物,使用对象的关系来描述事物之间的联系,这种思想就是面向对象。
类和对象:类的概念属于抽象点,相对于设计房屋的图纸,而对象的概念就是相对于具体点,就是具体的房屋,面向对象的程序设计就是围绕着类和对象进行展开的,而类的是一类事物的共性,对象是事物的个性。换句话说,类是对某一类事物的抽象描述,而对象用于表示现实中该类事物的个体。对象中所有的操作都是由类来决定。
封装性:封装性是对象相关的一个比较重要的性质。对于代码的重用性,如何定义了一个属性,想要别人的进行访问,可以把关键字改成private,这样其他类进行访问的时候必须进行getter,setter方法才可以进行。
这里的代码表示私有属性和私有方法不可以被外部类进行使用,只能通过getter,setter方法才可以进行。同时如果方法变成私有的方法,只能在原本类中定义一个共有的方法调用,这样就可以被外部类进行调用了
- package demo;
- public class Book {
- private String name;
- private int page;
- public Book(){
- System.out.println("hello world");
- }
- public Book(String name,int page){
- this.setPage(page);
- this.setName( name);
- System.out.printf("Name="+name+",page="+page);
- }
- public String getName() {
- return name;
- }
- private void setName(String name) {
- this.name = name;
- }
- public int getPage() {
- return page;
- }
- public void setPage(int page) {
- this.page = page;
- }
- private void print(){
- System.out.printf("Name="+name+",age="+page);
- }
- }
类之间的关系:
1.依赖;即是一种“user-a”的关系,当然这是一种非常常见的关系。它表示一个类之间引用的另一个类,这样就说明一个类依赖另一个类。比如房屋的建筑需要板砖来组成,这样房屋里就可以增加板砖这样的类,两个类产生依赖的关系。在实际操作中,尽量使得相互依赖的类减少,如何类A不知道类B的存在,自然不需要关注B的变化,这样就不会因为类B的变化而产生类A的错误,从而实现的低耦合。
- //一个房屋的类
- public class Home {
- //增加板砖的方法
- //Brick是板砖的类
- public void add(Brick brick ){
- .....
- }
- }
- //一个房屋的类
- public class Home {
- //包含Brick这个类
- //Brick是板砖的类
- Brick birck;
- ........
- }
- //一个学生类继承了人类
- public class Student extends Person {
- ........
- }
- class Room{
- public Room createRoom(){
- return new Room();
- }
- }
- class House{
- private Room room;
- public House(){
- room = new Room();
- }
- public void createRoom(){
- room.createRoom();
- }
- public interface Parent//父类接口
- {//定义一个方法
- public void hello();
- }
- public class Child_A implements Parent
- {
- public void hello();
- {
- //具体的实现细节;
- }
- }
- public class Child_B implements Parent
- {
- public void hello();
- {
- //具体的实现细节;
- }
- }
- public static void main(String[]args){
- Parent pa = new Child_A();
- //pa.hello()则显然是调用Child_A的方法;
- Parent pa = new Child_B();
- //pa.hello()则是在调用Child_B的方法。
- //所以,我们对于抽象的父类或者接口给出了我们的具体实现后,pa 可以完全不用管实现的细节,只访问我们定义的方法,
- }