我读了很多关于“接口”和“抽象类”的帖子
基本上,当我们谈论对象的特性时,我们使用“抽象类”。
当我们谈论对象能够做什么时,我们使用“接口”。
但这仍然令人困惑,所以我自己做一个例子来练习。
所以现在我在想一个对象'货物;
    public abstract class cargo {
        protected int id;
        public abstract int getWidth(int width);
        public abstract int setWidth(int width);
        public abstract int setHeight(int h);
        public abstract int getHeight(int h);
        public abstract int setDepth(int d);
        public abstract int getDepth(int d);
        public abstract int volume(int w,int h,int d);
        public int getId(){
            return this.id;
        }
        public abstract int setId();
        public abstract void setBrand();
        public abstract void getBrand( );
        .....so on , still have a lot of characteristic of a cargo
    }
    //in the other class
    public class usaCargo extends cargo{
                  ....
                  private 
    }
所以这里有几个关于我的设计的问题。
1.那么在真实的编程项目世界中,我们真的是像上面那样做吗?对我来说,我认为这是好的设计,我们符合货物的基本特征。
- 如果我们设置“private id”,那么我们实际上不能在任何子类中使用“id”这个变量,因为它是私有的,这是否意味着我们在抽象类中定义的每个变量都必须是公共/受保护的? 
- 有人可以举一些合适的例子让我的货物可以实现一些接口吗? - public interface registration{ public void lastWarrantyCheck(); }- 不过好像不太适合这里... 
- 我们通常不在接口内定义变量,对吗? 
我试图在 OOP 上获得更多意义。原谅我长长的问题。