Java 300
Java 300
🔹 Ma’anar OOP
OOP wata hanya ce ta shirye-shiryen kwamfuta wadda take mai da hankali kan objects – wato
abubuwan da suke da data (attributes) da kuma behavior (methods).
Java an gina shi gaba ɗaya ne akan OOP principles, don haka yana ɗaya daga cikin manyan
dalilan da yasa ake amfani da shi sosai.
1. Encapsulation 🏺
Misali:
class BankAccount {
private double balance;
// Setter
public void deposit(double amount) {
balance += amount;
}
// Getter
public double getBalance() {
return balance;
}
}
👉 A nan balance an kare shi (ba’a iya shiga kai tsaye ba).
2. Inheritance 👪
Misali:
class Animal {
void eat() {
[Link]("This animal eats food");
}
}
3. Polymorphism 🎭
Definition: “Many forms” – method ɗaya zai iya yin aiki daban-daban a yanayi daban.
Nau’i biyu:
1. Compile-time polymorphism (Overloading)
Method ɗaya, sunan ɗaya, amma parameters sun bambanta.
2. Runtime polymorphism (Overriding)
Subclass tana canza behavior na superclass method.
Misali (Overloading):
class Calculator {
int add(int a, int b) {
return a + b;
}
double add(double a, double b) {
return a + b;
}
}
Misali (Overriding):
class Animal {
void sound() {
[Link]("Animal makes sound");
}
}
4. Abstraction
Misali (Interface):
interface Vehicle {
void start();
}
Ans: Object-Oriented Programming hanya ce ta tsara shirye-shirye bisa objects. Pillars hudu:
Encapsulation, Inheritance, Polymorphism, Abstraction.
Ans:
class Student {
private String name;
public void setName(String n) { name = n; }
public String getName() { return name; }
}
Ans:
Ans: Banking system – yana amfani da encapsulation don kare balance, inheritance don raba aji-
ajin account, polymorphism don withdraw, abstraction don tsari na services.
🔹 Class shi ne blueprint (tsari) ko template da ake amfani da shi wajen ƙirƙirar objects.
🖥 Misali a Java
// Ƙirƙirar class
class Student {
// Attributes
String name;
int age;
// Method
void displayInfo() {
[Link](name + " is " + age + " years old.");
}
}
// Amfani da method
[Link]();
}
}
👉 Output:
Usman is 21 years old.
🔑 A takaice:
Class = blueprint/tsari.
Object = abu da aka gina daga class.
Attributes = bayanai.
Methods = ayyuka.
🔍 Real-life Misali:
Class: Car
o Attributes: color, model, price
o Methods: drive(), stop(), horn()
Object: Toyota Corolla (red, 2022 model, ₦5M)
📝 Summary:
Class shine ginshiƙin OOP – ba tare da shi ba, ba za ka iya ƙirƙirar objects ba.
👉 Idan class ɗin ka shine Car, to object zai zama red Toyota Corolla da kake hawa.
📌 Properties na Object
🖥 Misali a Java
class Car {
// Attributes
String color;
String model;
// Method
void drive() {
[Link]("Car is driving...");
}
}
// Saita attributes
[Link] = "Red";
[Link] = "Toyota";
👉 Output:
My car is a Red Toyota
Car is driving...
A nan:
Car → class
myCar → object (abun da aka ƙirƙira daga class ɗin)
color/model → attributes
drive() → method
🔑 Real-life Misalai:
📝 Summary:
🖥 Misali
class Student {
// Attributes (fields / variables)
String name;
int age;
String department;
}
🔑 A takaice:
📝 Real-life analogy:
Idan class ɗinka = Car, attributes = color, model, speed, price; methods = drive(), stop(),
horn().
🔹 Method shi ne set of instructions (block of code) da ake rubutawa domin ya aiwatar da wani
aiki guda a cikin class.
👉 Output:
👉 Output:
Sum = 8
🔑 A takaice:
🔍 Real-life Misali:
👉 Wato method "start()" zai iya fara mota, "accelerate()" zai ƙara gudu.
📝 Summary:
🌟 Modifiers a Java
A Java, modifier shi ne keyword da ake amfani da shi don canza ma’anar class, method, ko
variable.
1. Access Modifiers 🔑
Suna bayyana inda ake iya amfani da class, variable, ko method (visibility).
Misali:
class Student {
public String name; // kowa zai iya gani
private int age; // sai a cikin wannan class
protected String dept; // subclasses ko package ɗaya kawai
String level; // default access
}
2. Non-Access Modifiers ⚙️
🔹 For Classes
🔹 For Methods
🔹 For Variables
🔹 Menene Constructor?
Constructor special method ne da ake amfani da shi wajen ƙirƙirar (initialize) object a cikin
class.
Lokacin da ka yi new ClassName(), Java zata kira constructor kai tsaye.
🔹 Properties na Constructor
🔹 Iri na Constructors
1. Default Constructor
class Student {
String name;
int age;
// Default constructor
Student() {
name = "Unknown";
age = 0;
}
}
Unknown - 0
2. Parameterized Constructor
class Student {
String name;
int age;
// Parameterized constructor
Student(String n, int a) {
name = n;
age = a;
}
}
Output:
Usman - 22
3. Constructor Overloading
Idan akwai constructors da yawa a cikin class ɗaya, amma suna da parameters daban-daban.
class Student {
String name;
int age;
// Default constructor
Student() {
name = "Unknown";
age = 0;
}
// Parameterized constructor
Student(String n, int a) {
name = n;
age = a;
}
}
public class Main {
public static void main(String[] args) {
Student s1 = new Student(); // default
Student s2 = new Student("Usman", 22); // parameterized
Output:
Unknown - 0
Usman - 22
🌟 Menene this?
this kalma ce ta musamman (keyword) a Java da ke nuni da current object da ake aiki da shi a
cikin class.
🔹 Amfaninsa:
// Constructor
Student(String name, int age) {
[Link] = name; // '[Link]' yana nuni da attribute
[Link] = age; // 'age' na hagu = attribute, 'age' na dama =
parameter
}
void display() {
[Link](name + " - " + age);
}
}
Output:
Usman - 22
// Default constructor
Student() {
this("Unknown", 0); // kira parameterized constructor
}
// Parameterized constructor
Student(String name, int age) {
[Link] = name;
[Link] = age;
}
void display() {
[Link](name + " - " + age);
}
}
[Link]();
[Link]();
}
}
Output:
Unknown - 0
Usman - 22
📝 Takaitawa:
🌟 Inheritance a Java
Inheritance yana ba mu damar gadon siffofi (attributes) da ayyuka (methods) daga wani class
zuwa wani class.
// Child class
class Dog extends Animal {
void bark() {
[Link]("Dog is barking.");
}
}
Output:
void displayInfo() {
[Link](name + " - " + age);
}
}
void showCourse() {
[Link]("Course: " + course);
}
}
Output:
Usman - 22
Course: Computer Science
🔹 Fa’idodin Inheritance:
1. Code Reusability → Maimakon rubuta code iri ɗaya sau da yawa, sai a gado shi.
2. Readability → Abubuwa sun zama tsari.
3. Maintenance → Sauƙin gyara da fadada code.
🔹 Menene Overriding?
Method overriding yana faruwa idan Child Class ya sake rubuta (redefine) method da aka
gada daga Parent Class, don ya yi aiki dabam.
Output:
Idan kana so child ya yi overriding amma har yanzu a kira method na parent, zaka yi amfani da
[Link]().
class Person {
void introduce() {
[Link]("I am a person.");
}
}
Output:
I am a person.
I am also a student.
🌟 Polymorphism a Java
🔹 Menene Polymorphism?
Output:
5
9
a = new Dog();
[Link](); // Dog’s version
a = new Cat();
[Link](); // Cat’s version
}
}
Output:
Dog barks
Cat meows
A nan muna ganin runtime polymorphism: duk da cewa a an ayyana shi a matsayin Animal, sai
dai yana ɗaukar ayyuka daban-daban gwargwadon object ɗin da aka ba shi.
🔑 Amfanin Polymorphism
📌 Takaitawa
🌟 Abstraction a Java
🔹 Menene Abstraction?
Abstraction yana nufin ɓoye cikakken aiwatarwa (implementation) kuma a nuna kawai
mahimman bayanai.
Wato: "Ka nuna me ake yi, ka ɓoye yadda ake yi."
Misali a Rayuwa:
1. Abstract Classes
2. Interfaces
✨ 1. Abstract Class
Output:
Dog barks
Animal is sleeping
✨ 2. Interface
interface Animal {
void sound(); // abstract by default
}
Output:
Dog barks
Zai iya samun abstract + normal methods Duk methods abstract ne (sai dai default/static)
Zai iya samun variables da different modifiers Variables duka public static final ne
Class na iya gadon abstract class ɗaya kawai Class zai iya implement interfaces da yawa
📌 Amfanin Abstraction
🌟 Encapsulation a Java
🔹 Menene Encapsulation?
Encapsulation shine rufe bayanai (data) da ayyuka (methods) cikin class ɗaya, sannan ka
ƙuntata hanyar samun damar bayanan ta hanyar access modifiers da getter/setter methods.
Wato: "Ka rufe data, ka ba mutane hanya mai tsaro don su shiga."
🌍 Misali na Rayuwa:
🔹 Ka’idojin Encapsulation
1. Variables → a sa su private.
2. Getter & Setter methods → public, domin su bada damar karɓar ko gyara bayanai
cikin tsaro.
✨ Misali a Java
class Student {
// Private attributes (encapsulation)
private String name;
private int age;
// Setter method
public void setName(String name) {
[Link] = name;
}
// Getter method
public String getName() {
return name;
}
[Link]("Usman");
[Link](22);
Output:
Usman - 22
🔑 Amfanin Encapsulation
1. Data Hiding → Bayanai sun zama masu tsaro (ba kowa zai iya shiga ba).
2. Control → Za ka iya sarrafa values (misali: ba a bar age < 0).
3. Flexibility → Idan ka canza code a ciki, ba zai shafi waje ba.
4. Maintainability → Sauƙin gyara da ci gaba da aiki.
Answer (English):
A constructor in Java is a special method that is used to initialize objects. It has the same name as
the class and does not have a return type.
Answer (Hausa):
Constructor a cikin Java wata special method ce da ake amfani da ita don yin initialization na
objects. Sunanta yana daidai da sunan class ɗin, kuma baya da return type.
Answer (English):
There are mainly two types of constructors in Java:
Answer (Hausa):
Akwai manyan nau’ikan constructors guda biyu a Java:
1. Default Constructor – Constructor ɗin da baya ɗaukar parameter, Java tana bayarwa ta
atomatik idan baka rubuta naka ba.
2. Parameterized Constructor – Constructor ɗin da yake karɓar arguments domin saita
object da wani takamaiman value.
Answer (English):
Answer (Hausa):
Constructor yana amfani don fara (initialize) object, amma method tana amfani don
aiwatar da aiki.
Constructor yana da suna iri ɗaya da class, amma method na iya samun kowanne suna.
Constructor baya da return type, amma method kullum tana da return type.
Answer (English):
Yes, a constructor can be overloaded by defining multiple constructors in the same class with
different parameter lists.
Answer (Hausa):
Eh, za’a iya yin overloading na constructor ta hanyar rubuta constructors da yawa a cikin class
ɗaya amma suna da bambancin parameters.
Answer (English):
No, constructors are not inherited in Java. However, the child class can call the parent
constructor using the super keyword.
Answer (Hausa):
A’a, constructors ba sa inheritance a Java. Amma child class na iya kiran parent constructor ta
amfani da super keyword.
Answer (English):
If we don’t define any constructor, Java automatically provides a default constructor with no
parameters.
Answer (Hausa):
Idan baka rubuta wani constructor a class ba, Java zata bayar da default constructor ta atomatik
wanda baya ɗaukar parameters.
Answer (English):
A class in Java is a blueprint (template) used to create objects. It defines attributes (variables)
and behaviors (methods) of an object.
Answer (Hausa):
Class a cikin Java shi ne tsarin gini (blueprint) da ake amfani da shi wajen ƙirƙirar objects.
Yana ƙunshe da attributes (variables) da kuma behaviors (methods) na object.
Example:
class Car {
String color;
int speed;
void drive() {
[Link]("The car is driving...");
}
}
Answer (English):
An object is an instance of a class. It represents a real-world entity and is created using the new
keyword.
Answer (Hausa):
Object wani misali (instance) ne na class. Yana wakiltar abu na gaske a rayuwa, kuma ana
ƙirƙirarsa da new keyword.
Example:
Answer (English):
A constructor in Java is a special method that initializes an object. It has the same name as the
class and does not have a return type.
Answer (Hausa):
Constructor a cikin Java wata special method ce da ake amfani da ita don fara (initialize) object.
Sunanta yana daidai da sunan class, kuma baya da return type.
Example:
class Car {
String color;
// Constructor
Car() {
color = "Red";
}
}
Answer (English):
Answer (Hausa):
1. Default Constructor – Baya da parameters, Java tana ƙirƙirar shi ta atomatik idan baka
rubuta naka ba.
2. Parameterized Constructor – Yana ɗaukar arguments don saita object da wani value na
musamman.
Example:
class Car {
String color;
// Default constructor
Car() {
color = "Black";
}
// Parameterized constructor
Car(String c) {
color = c;
}
}
Answer (English):
Answer (English):
Yes, constructors can be overloaded by defining multiple constructors with different parameter
lists.
Answer (Hausa):
Eh, za’a iya yin overloading na constructors ta hanyar rubuta constructors da yawa da suke da
bambanci a parameters.
Example:
class Car {
String color;
int speed;
// Overloaded constructors
Car() {
color = "Blue";
speed = 100;
}
Car(String c, int s) {
color = c;
speed = s;
}
}
Answer (English):
No, constructors are not inherited. But the child class can call the parent’s constructor using
super().
Answer (Hausa):
A’a, constructors ba sa inheritance. Amma child class na iya kiran parent constructor da
super().
Example:
class Vehicle {
Vehicle() {
[Link]("Vehicle constructor");
}
}
Answer (English):
If no constructor is defined, Java automatically provides a default constructor with no
parameters.
Answer (Hausa):
Idan baka rubuta constructor ba, Java zata ƙirƙiri maka default constructor ta atomatik wanda
baya da parameters.
Answer (English):
Yes, a constructor can be private. This is us
Answer (Hausa):
Eh, za’a iya yin private constructor. Ana yin hakan yawanci a Singleton Design Pattern
domin hana ƙirƙirar objects masu yawa.
Answer (Hausa):
Class wani tsarin gini (blueprint) ne a Java da ake amfani da shi wajen ƙirƙirar objects. Yana
ƙunshe da attributes (variables) da methods (aikin object).
Example:
class Car {
String color;
int speed;
void drive() {
[Link]("The car is driving...");
}
}
Answer (English):
An object is an instance of a class. It represents a real-world entity and is created using the new
keyword.
Answer (Hausa):
Object wani misali (instance) ne na class. Yana wakiltar abu na ainihi a rayuwa, kuma ana
ƙirƙirarsa da new keyword.
Example:
Answer (English):
Attributes are variables defined inside a class that describe the state or properties of an object.
Answer (Hausa):
Attribute su ne variables da suke cikin class waɗanda suke bayyana halaye (properties) na
object.
Example:
class Student {
String name; // attribute
int age; // attribute
}
Answer (English):
A method is a block of code inside a class that performs an action. It defines the behavior of
objects.
Answer (Hausa):
Method wani block na code ne a cikin class wanda yake yin aiki. Yana bayyana aikin object.
Example:
class Student {
void study() {
[Link]("Student is studying...");
}
}
Answer (English):
Modifiers are keywords used to change the behavior of classes, variables, or methods.
Types of Modifiers:
1. Access Modifiers:
o public → accessible everywhere.
o private → accessible only inside the class.
o protected → accessible within package + subclasses.
o default (no keyword) → accessible only in same package.
2. Non-Access Modifiers:
o static → belongs to class, not object.
o final → cannot be changed.
o abstract → must be implemented in subclass.
o synchronized → controls multi-threading access.
Answer (Hausa):
Modifiers su ne keywords da ake amfani da su domin canza halayen class, variable, ko method.
Rabe-rabensu:
1. Access Modifiers:
o public → za’a iya amfani da shi ko’ina.
o private → ana amfani da shi a cikin class kawai.
o protected → ana amfani da shi a package da subclasses.
odefault (ba tare da keyword ba) → a cikin package kawai.
2. Non-Access Modifiers:
o static → na class ne, ba na object.
o final → ba za a iya canzawa ba.
o abstract → dole subclass ta cika shi.
o synchronized → yana sarrafa multi-threading.
Answer (English):
The this keyword in Java refers to the current object of the class. It is used to:
Answer (Hausa):
this keyword tana nufin object ɗin da yake a halin yanzu. Ana amfani da ita wajen:
Example:
class Student {
String name;
Student(String name) {
[Link] = name; // this differentiates instance variable
}
}
Answer (Hausa):
Constructor wata special method ce da ake amfani da ita wajen fara (initialize) object.
Types of Constructors:
Example:
class Car {
String color;
// Default constructor
Car() {
color = "Black";
}
// Parameterized constructor
Car(String c) {
color = c;
}
}
Answer (English):
Inheritance is an OOP concept where one class (child/subclass) inherits properties and behaviors
of another class (parent/superclass).
Answer (Hausa):
Inheritance wata hanya ce a OOP inda class ɗaya (child/subclass) yake gadon properties da
methods daga wani class (parent/superclass).
Yana bada damar sake amfani da code (reusability).
Ana amfani da extends keyword.
Example:
class Vehicle {
void move() {
[Link]("Vehicle is moving...");
}
}
Answer (English):
Overloading: Same method name, different parameter lists, inside the same class.
Overriding: Subclass provides a new implementation for a method already defined in
parent class.
Answer (Hausa):
Overloading: Hanya ce da ake da suna iri ɗaya, amma parameters sun bambanta, a cikin
class ɗaya.
Overriding: Subclass tana ba da sabon implementation ga method da aka riga aka rubuta
a parent class.
Example Overloading:
class MathCalc {
int add(int a, int b) {
return a + b;
}
int add(int a, int b, int c) {
return a + b + c;
}
}
Example Overriding:
class Animal {
void sound() {
[Link]("Animal makes sound");
}
}
Answer (English):
Encapsulation is the process of wrapping data (variables) and methods into a single unit (class)
and restricting direct access using access modifiers.
Answer (Hausa):
Encapsulation hanya ce ta haɗa data da methods cikin unit ɗaya (class), sannan a takaita samun
kai tsaye ga su ta amfani da modifiers.
Example:
class Student {
private String name;
Answer (English):
Abstraction is the process of hiding implementation details and showing only essential features
to the user.
Example:
Answer (English):
Polymorphism means "many forms". It allows one object to behave in multiple ways.
Answer (Hausa):
Polymorphism na nufin "siffa da yawa". Yana bawa object damar yin aiki ta hanyoyi daban-
daban.
Example:
class Animal {
void sound() {
[Link]("Animal makes sound");
}
}
// Runtime polymorphism
Animal a = new Dog();
[Link](); // Dog barks
// Abstract class (Abstraction)
String name;
int age;
// Constructor
[Link] = name;
[Link] = age;
// Abstract method
// Concrete method
void displayInfo() {
// Encapsulation + Inheritance
super(name, age);
[Link] = "Unknown";
[Link] = 0.0;
super(name, age);
[Link] = course;
[Link] = gpa;
return course;
[Link] = course;
// Method overriding
@Override
void role() {
// Method overloading
void study() {
// Another subclass
super(name, age);
[Link] = subject;
@Override
void role() {
// Main class
// Using constructors
// Display info
[Link]();
[Link]();
[Link]();
// Using encapsulation
[Link]("Mathematics");
[Link]([Link]());
// Using overloading
[Link]();
[Link]("Java");
// Polymorphism (runtime)
Person p;
[Link]();
[Link]();