Intro to Classes and Objects
Lesson 8 - OOP
There are four main OOP (object oriented programming) concepts in Java.
Encapsulation (setters and getters, we will discuss this today)
Abstraction
Inheritance
Polymorphism
Today OOP topics
non static methods
this
constructors and copy constructors
objects are passed to functions as references
toString
OOP - Encapsulation
ΧΧ‘ΧͺΧ¨Χͺ ΧΧΧΧ’
public
andprivate
getters and setters
What are Classes and objects?


Class - Dogs
Data members or objects- size, age, color, breed, etc.
Methods-
sleep()
,toString()
Attempt 1 πΆ
// Class Declaration
public class Dog {
// Instance Variables
String breed;
String name;
String size;
int age;
String color;
// non static method
public void sleep() {
System.out.println(name + " is sleeping");
}
//static method
public static void whoIsSleeping(Dog dog){
System.out.println(dog.name + " is sleeping");
}
public String toString() {
return ("Name : "+name+ "\nBreed is: "+breed+"\nSize is: "+size+"\nAge is: "+age+"\nColor is: "+color+ "\n");
}
public static void main(String[] args) {
Dog maltese = new Dog();
maltese.breed="Maltese";
maltese.size="Small";
maltese.age=2;
maltese.color="white";
maltese.sleep();
System.out.println();
System.out.println(maltese);
maltese.name="fluffy";
Dog.whoIsSleeping(maltese);
}
}
null is sleeping
Breed is: Maltese
Size is: Small
Age is: 2
Color is: white
fluffy is sleeping
we have a
static
method (doesnt belong to class),whoIsSleeping()
we have a
non static
method (belongs to class),sleep()
We got null is slepping
, we forgot to initialize the name we should use a constructor
Attempt 2 - Adding constructors
here we will add 2 constructors
a copy constructor
a constructor that receives arguments
public class Main {
public static void main(String[] args) {
Dog fluffy = new Dog("Fluffy","Maltese",
"Small",2,"white");
fluffy.sleep();
System.out.println();
System.out.println(fluffy);
Dog snowball = new Dog(fluffy); //call copy constructor
System.out.println();
snowball.name = "Snowball";
System.out.println(snowball.name);
}
}
Fluffy is sleeping
Breed is: Maltese
Size is: Small
Age is: 2
Color is: white
Snowball
Attempt 3 - Adding encapsulation
we should not be able to directly change and get properties of the object for example here
public static void main(String[] args) {
Dog fluffy = new Dog( "Fluffy", "Maltese", "Small", 2, "white");
fluffy.name = "Snowball";
}
but rather use setters and getters
the fields should also be private (can't be accessed outside the class)
so now we have
public class Main {
public static void main(String[] args) {
Dog fluffy = new Dog("Fluffy","Maltese","Small",2,"white");
Dog snowball = new Dog(fluffy); //call copy constructor
System.out.println();
snowball.setName("Snowball");
System.out.println(snowball.getName());
}
}
Snowball
An array of Dogs πΆπ©π
public class Main {
public static void main(String[] args) {
String[] names = {"fluffy", "snowball", "shugi", "cookie"};
Dog[] dogs = new Dog[4];
for (int i = 0; i < dogs.length; i++)
dogs[i] = new Dog(names[i],"Maltese","Small",2,"white");
for (int i = 0; i < dogs.length; i++)
System.out.println(dogs[i]);
}
}
Name : fluffy
Breed is: Maltese
Size is: Small
Age is: 2
Color is: white
Name : snowball
Breed is: Maltese
Size is: Small
Age is: 2
Color is: white
...
Last updated
Was this helpful?