> Code Re-use Code re-use is a method that programmers use to save time. It involves using existing code that you have written or that other people have written and released publicly. This saves you time in most case scenarios. But in some cases this can create more problems than it fixes, for instance using other peoples code as a base can cause complexity or problems as it may not work with the rest of your code, or you might not fully understand their code. In these cases it would sometimes be quicker if you re-wrote the code you are trying to get working into your application. So code re-use does save time but not always. > Classes and Objects Classes are a bunch of premade class files which are then used by programmers as objects, for instance if I created a class named Computer, I could then create an object which instantiated the Computer class, for instance; ‘Computer Dell = new Computer();’. Objects are, instances, or embodiments if you will, of Class files. You can use these object instances you have created to reference the data inside of the class or use the methods inside it. You can also use these object instances to set the data inside of the class. > Abstraction This is the process that determines how you control or relate to the class files that have been written by you or others. Abstraction allows you to use the methods already created and not know what they do. An example of this would be typing on your keyboard. All that is to you is pressing a key and then the key you pressed appears on the screen. But the bit you don’t know about would be the key then sending the ASCII value to the computer’s CPU for it to process the key event, which then puts the value onto the screen. The only thing you need to know how to do is press a key on the keyboard, and then you are using the keyboards inner functions without knowing exactly what that function is doing. > Inheritance Inheritance in java means that you can use the state and behaviour from other class files, this is used for defining multiple classes’ with common values, such as mobile phones, we could have a class named mobile which has the basic variables like model, make, colour etc. Then we could extend that class for each mobile and set the custom data for each, such as touch-screen, camera, and colour screens. Each class is limited to only one super class (can inherit only one class), where as a super class can have an unlimited amount of subclass’s (classes’ that inherit it). > Polymorphism Polymorphism is a valuable feature of java; it allows for objects variables or methods with many forms. Such as the + operator, if you would add two integers together, for example, ‘1 + 2’ this would equal 3. Whereas if you was to add two strings together it would not add them it would connect them together, for example (“hello ” + “Peter”), would produce “Hello Peter”. This is a widely used and > Encapsulation This is where the state and behaviour of an object are kept together in the same class file; which means that the data and methods which co-operate with that data are kept in the same class file. This means that the access is restricted to the objects state and how it works so that the class’s state cannot be corrupted. An example of this would Bicycle, let’s say that your bicycle class only has 6 gears, if you tried to switch the bicycle to gear 7, it would reject the value and carry on what it was doing. If it allowed you to set the gear to 7 it would corrupt the class and its values, which could crash your application if not handled correctly.