0% found this document useful (0 votes)
3 views46 pages

Java 300

Object-Oriented Programming (OOP) in Java focuses on objects that contain data and behavior, with core principles including Encapsulation, Inheritance, Polymorphism, and Abstraction. Classes serve as blueprints for creating objects, which have attributes and methods, while modifiers control visibility and behavior. Real-world applications of OOP concepts are illustrated through examples like banking systems and vehicles.

Uploaded by

uthmanayaba
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views46 pages

Java 300

Object-Oriented Programming (OOP) in Java focuses on objects that contain data and behavior, with core principles including Encapsulation, Inheritance, Polymorphism, and Abstraction. Classes serve as blueprints for creating objects, which have attributes and methods, while modifiers control visibility and behavior. Real-world applications of OOP concepts are illustrated through examples like banking systems and vehicles.

Uploaded by

uthmanayaba
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

🌟 Object-Oriented Programming (OOP) in Java

🔹 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.

🏛 Manyan Pillars na OOP

1. Encapsulation 🏺

 Definition: Tsari ne da ke ɓoye cikakken bayanin variables da methods daga waje.


 Hanya: Amfani da private access modifier don kare variables, sannan a bayar da
public getters and setters don shiga.
 Fa’ida:
o Kare bayanai daga “direct access”.
o Sauƙaƙa gyara (maintenance).
o Inganta security.

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 👪

 Definition: Subclass tana gado daga Superclass.


 Keyword: extends.
 Fa’ida:
o Code reusability – babu buƙatar sake rubuta code.
o Sauƙaƙe hierarchy a cikin program.

Misali:

class Animal {
void eat() {
[Link]("This animal eats food");
}
}

class Dog extends Animal {


void bark() {
[Link]("Dog barks");
}
}

public class Test {


public static void main(String[] args) {
Dog d = new Dog();
[Link](); // inherited from Animal
[Link](); // from Dog
}
}

👉 Dog ya gaji eat() daga Animal.

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");
}
}

class Cat extends Animal {


@Override
void sound() {
[Link]("Cat meows");
}
}

👉 Overloading yana faruwa a compile-time, Overriding a runtime.

4. Abstraction

 Definition: Ɓoyewa cikakken implementation, a nuna muhimman abubuwa kawai.


 Hanya: Ana amfani da Abstract classes da Interfaces.
 Fa’ida:
o Rage rikitarwa.
o Ƙara tsari.

Misali (Abstract class):

abstract class Shape {


abstract void draw(); // abstract method
}

class Circle extends Shape {


void draw() {
[Link]("Drawing Circle");
}
}

Misali (Interface):

interface Vehicle {
void start();
}

class Car implements Vehicle {


public void start() {
[Link]("Car starts with key");
}
}

🌍 Real-World Example: OOP in Action

Misali: Banking System

 Encapsulation: balance a bank account an yi private.


 Inheritance: SavingsAccount da CurrentAccount suna gado daga BankAccount.
 Polymorphism: method withdraw() zai yi aiki daban a Savings vs Current account.
 Abstraction: Interface BankService tana buƙatar deposit() da withdraw() amma
details an ɓoye.

📝 Practice Questions (da Answers)

Q1. Menene OOP? Kuma ambaci pillars hudu.

Ans: Object-Oriented Programming hanya ce ta tsara shirye-shirye bisa objects. Pillars hudu:
Encapsulation, Inheritance, Polymorphism, Abstraction.

Q2. Rubuta Java code da ke nuna encapsulation.

Ans:

class Student {
private String name;
public void setName(String n) { name = n; }
public String getName() { return name; }
}

Q3. Bambanci tsakanin overloading da overriding?

Ans:

 Overloading: compile-time, methods suna da suna ɗaya amma parameters daban.


 Overriding: runtime, subclass tana sake rubuta method ɗin superclass.
Q4. Yi misali da real-world application inda OOP yake amfani.

Ans: Banking system – yana amfani da encapsulation don kare balance, inheritance don raba aji-
ajin account, polymorphism don withdraw, abstraction don tsari na services.

🌟 Menene Class a Java (da OOP gaba ɗaya)?

🔹 Class shi ne blueprint (tsari) ko template da ake amfani da shi wajen ƙirƙirar objects.

 Yana ƙunshe da attributes (fields/variables) da methods (functions).


 Ba shi da rai a kansa, amma shi ne tushen ƙirƙirar objects.

👉 Idan muka kwatanta da gini:

 Class = zanen ginin (blueprint).


 Object = gidan da aka gina daga wannan zane.

📌 Abubuwan da Class yake ƙunshe

1. Attributes (fields/variables) → sifa ko bayanan abu.


2. Methods (functions) → ayyukan da abu yake yi.
3. Constructors → hanyar fara object da values.
4. Access modifiers → kare bayanai (public, private, da sauransu).

🖥 Misali a Java
// Ƙirƙirar class
class Student {
// Attributes
String name;
int age;

// Method
void displayInfo() {
[Link](name + " is " + age + " years old.");
}
}

public class Test {


public static void main(String[] args) {
// Ƙirƙirar object daga class
Student s1 = new Student();
[Link] = "Usman";
[Link] = 21;

// 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.

🌟 Menene Object a Java (da OOP gaba ɗaya)?

🔹 Object shi ne real-world entity da ake ƙirƙira daga class.

 Class = blueprint / tsari


 Object = abu da aka gina daga tsari

👉 Idan class ɗin ka shine Car, to object zai zama red Toyota Corolla da kake hawa.
📌 Properties na Object

 Yana da Attributes (data/fields)


 Yana da Behaviors (methods)
 Ana ƙirƙira shi da new keyword a Java.

🖥 Misali a Java
class Car {
// Attributes
String color;
String model;

// Method
void drive() {
[Link]("Car is driving...");
}
}

public class Test {


public static void main(String[] args) {
// Ƙirƙirar object
Car myCar = new Car();

// Saita attributes
[Link] = "Red";
[Link] = "Toyota";

// Amfani da attributes da method


[Link]("My car is a " + [Link] + " " + [Link]);
[Link]();
}
}

👉 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:

 Class = Student, Object = Usman Sani


 Class = Phone, Object = Infinix Note 12
 Class = Animal, Object = Dog

📝 Summary:

 Class = Tsari / Blueprint


 Object = Abu na gaske da aka ƙirƙira daga class
 Attributes = Siffofin object
 Methods = Ayyukan da object zai iya yi

🌟 Ma’anar Attribute a Java (da OOP gaba ɗaya)

Attribute shi ne sifa ko bayanin data da wani object yake da shi.

 A cikin class, attribute yana nufin variable da aka ayyana (fields).


 A lokacin da aka ƙirƙiri object, attributes ɗinsa suna samun specific values.

🖥 Misali
class Student {
// Attributes (fields / variables)
String name;
int age;
String department;
}

public class Test {


public static void main(String[] args) {
// Ƙirƙirar object
Student s1 = new Student();
[Link] = "Usman";
[Link] = 21;
[Link] = "Computer Science";

[Link]([Link] + " - " + [Link] + " - " + [Link]);


}
}
👉 A nan:

 name, age, da department su ne attributes na class Student.


 s1 object yana da values: "Usman", 21, "Computer Science".

🔑 A takaice:

 Class = tsarin abu (blueprint).


 Attributes = bayanan (variables) da class ke riƙe.
 Methods = abubuwan da class ke iya yi (functions).

📝 Real-life analogy:

 Idan class ɗinka = Car, attributes = color, model, speed, price; methods = drive(), stop(),
horn().

🌟 Menene Method a Java?

🔹 Method shi ne set of instructions (block of code) da ake rubutawa domin ya aiwatar da wani
aiki guda a cikin class.

 Yana taimakawa wajen rage maimaita code (reusability).


 Ana kiran shi ta hanyar object da aka ƙirƙira daga class.

📌 Syntax na Method a Java


returnType methodName(parameters) {
// code to be executed
}

 returnType → irin data da zai dawo (e.g. int, String, void).


 methodName → sunan method (ya kamata ya fara da ƙaramin harafi).
 parameters → bayanan da method ke karɓa (ba lallai ba ne).

🖥 Misali 1: Method mara parameter


class Student {
void study() {
[Link]("The student is studying.");
}
}

public class Test {


public static void main(String[] args) {
Student s1 = new Student();
[Link](); // kiran method
}
}

👉 Output:

The student is studying.

🖥 Misali 2: Method mai parameter da return value


class Calculator {
int add(int a, int b) {
return a + b;
}
}

public class Test {


public static void main(String[] args) {
Calculator calc = new Calculator();
int result = [Link](5, 3);
[Link]("Sum = " + result);
}
}

👉 Output:

Sum = 8

🔑 A takaice:

 Method = aikin da class/Object zai iya yi.


 Attributes = bayanai da object ke riƙe.
 Methods suna amfani da attributes don aiwatar da aiki.

🔍 Real-life Misali:

Idan class = Car


 Attributes: color, model, speed
 Methods: start(), stop(), accelerate()

👉 Wato method "start()" zai iya fara mota, "accelerate()" zai ƙara gudu.

📝 Summary:

 Method = block of code da yake gudanar da aiki


 Ana kiran method ta hanyar [Link]()
 Iri-iri:
o Void methods (ba su dawo da value)
o Return methods (suna dawo da value)

🌟 Modifiers a Java

A Java, modifier shi ne keyword da ake amfani da shi don canza ma’anar class, method, ko
variable.

Ana raba su gida biyu:

1. Access Modifiers 🔑

Suna bayyana inda ake iya amfani da class, variable, ko method (visibility).

📌 Rabe-raben Access Modifiers:

1. public → ana iya shiga daga kowanne package/class.


2. private → ana iya shiga daga cikin class ɗaya kawai.
3. protected → ana iya shiga daga class ɗaya + subclasses + classes a cikin package ɗaya.
4. default (babu modifier a rubuce) → ana iya shiga daga classes a cikin package ɗaya
kawai.

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 ⚙️

Suna bayyana halayen (behavior/properties) na class, variable, ko method.

📌 Rabe-raben Non-Access Modifiers:

🔹 For Classes

 final → class ba za a iya gado daga gare shi ba.


 abstract → class ba za a iya ƙirƙirar object kai tsaye ba, sai a gaji daga gare shi.

🔹 For Methods

 final → method ba za a iya overriding ba.


 abstract → method ba ta da body (implementation), sai a rubuta ta a subclass.
 static → ana iya kiran method ba tare da ƙirƙirar object ba.
 synchronized → ana amfani da shi wajen multithreading don hana rikici.

🔹 For Variables

 final → variable constant ne (ba zai canza value ba).


 static → variable ɗin ya zama na class baki ɗaya (shared by all objects).
 transient → ana skipping variable lokacin serialization.
 volatile → ana amfani da shi wajen multithreading don tabbatar da cewa threads suna
karanta value kai tsaye daga memory.

🖥 Misali da Non-Access Modifiers:


class Car {
static int wheels = 4; // shared by all cars
final String brand = "Toyota"; // constant

public void drive() {


[Link]("Car is driving...");
}

final void stop() {


[Link]("Car stopped.");
}
}
📝 Summary

 Access Modifiers → suna sarrafa visibility (public, private, protected, default).


 Non-Access Modifiers → suna sarrafa behavior/properties (final, static, abstract,
synchronized, volatile, transient).

🔹 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

1. Sunan constructor dole ya zama daidai da sunan class.


2. Ba ya da return type (ko ma void).
3. Ana kiran shi automatically lokacin da ake ƙirƙirar object.

🔹 Iri na Constructors

1. Default Constructor

Idan baka ƙirƙira ba, Java zata baka default (empty).

class Student {
String name;
int age;

// Default constructor
Student() {
name = "Unknown";
age = 0;
}
}

public class Main {


public static void main(String[] args) {
Student s1 = new Student(); // constructor zai kira
[Link]([Link] + " - " + [Link]);
}
}
Output:

Unknown - 0

2. Parameterized Constructor

Idan kana son ba object values lokacin da ake ƙirƙirarsa.

class Student {
String name;
int age;

// Parameterized constructor
Student(String n, int a) {
name = n;
age = a;
}
}

public class Main {


public static void main(String[] args) {
Student s1 = new Student("Usman", 22);
[Link]([Link] + " - " + [Link]);
}
}

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

[Link]([Link] + " - " + [Link]);


[Link]([Link] + " - " + [Link]);
}
}

Output:

Unknown - 0
Usman - 22

🔹 Me yasa ake amfani da Constructors?

 Don initialize object da default values.


 Don initialize object da custom values.
 Don yin code reusable ta hanyar overloading.

🔑 this Keyword a Java

🌟 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:

1. Ƙara bambanci tsakanin attributes da parameters


2. Kiran constructors daga wani constructor (constructor chaining)
3. Aika current object zuwa method ko class
4. Komawa current object daga method

📌 Misali 1: Bambanci tsakanin attributes da parameters


class Student {
String name;
int age;

// 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);
}
}

public class Main {


public static void main(String[] args) {
Student s1 = new Student("Usman", 22);
[Link]();
}
}

Output:

Usman - 22

📌 Misali 2: Constructor Chaining (kiran constructor daga wani)


class Student {
String name;
int age;

// 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);
}
}

public class Main {


public static void main(String[] args) {
Student s1 = new Student(); // zai kira default
Student s2 = new Student("Usman", 22);

[Link]();
[Link]();
}
}

Output:

Unknown - 0
Usman - 22

📝 Takaitawa:

 this = current object


 Ana amfani da shi don:
o warware conflict tsakanin attributes da parameters
o yin constructor chaining
o aika current object zuwa methods

🌟 Inheritance a Java

Inheritance yana ba mu damar gadon siffofi (attributes) da ayyuka (methods) daga wani class
zuwa wani class.

 Parent/Superclass → Class da ake gadonsa.


 Child/Subclass → Class da ke gado daga parent.
 Ana amfani da extends keyword.

🔹 Misali 1: Basic Inheritance


// Parent class
class Animal {
void eat() {
[Link]("This animal eats food.");
}
}

// Child class
class Dog extends Animal {
void bark() {
[Link]("Dog is barking.");
}
}

public class Main {


public static void main(String[] args) {
Dog d = new Dog();
[Link](); // gado daga Animal
[Link](); // method nasa
}
}

Output:

This animal eats food.


Dog is barking.

🔹 Misali 2: Attributes inheritance


class Person {
String name;
int age;

void displayInfo() {
[Link](name + " - " + age);
}
}

class Student extends Person {


String course;

void showCourse() {
[Link]("Course: " + course);
}
}

public class Main {


public static void main(String[] args) {
Student s = new Student();
[Link] = "Usman";
[Link] = 22;
[Link] = "Computer Science";

[Link](); // daga Person


[Link](); // nasa
}
}

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.

🔑 Nau’ikan Inheritance a Java:

1. Single Inheritance → Class ɗaya ya gado daga class ɗaya.


2. Multilevel Inheritance → Gado a tsari (Grandparent → Parent → Child).
3. Hierarchical Inheritance → Classes da yawa suna gado daga parent ɗaya.
⚠️Java baya goyon bayan Multiple Inheritance (wato gado daga parents biyu kai
tsaye) saboda rikicewar method.

🌟 Method Overriding a Java

🔹 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.

 Parent method → ana rubutawa a parent class.


 Child method → ana rubutawa da sunanta iri ɗaya, return type iri ɗaya, kuma
parameters iri ɗaya.
 Ana amfani da @Override annotation don tabbatar da overriding.

🔹 Misali 1: Basic Overriding


class Animal {
void sound() {
[Link]("Animal makes a sound");
}
}

class Dog extends Animal {


@Override
void sound() {
[Link]("Dog barks");
}
}

public class Main {


public static void main(String[] args) {
Animal a = new Animal();
Dog d = new Dog();
[Link](); // daga parent
[Link](); // overridden a child
}
}

Output:

Animal makes a sound


Dog barks

🔹 Misali 2: Using super keyword

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.");
}
}

class Student extends Person {


@Override
void introduce() {
[Link](); // kira parent version
[Link]("I am also a student.");
}
}

public class Main {


public static void main(String[] args) {
Student s = new Student();
[Link]();
}
}

Output:

I am a person.
I am also a student.

🔑 Ka’idojin Method Overriding:

1. Method name → dole ya zama iri ɗaya da parent.


2. Return type → dole ya dace.
3. Parameters → dole su dace.
4. Access Modifier → ba za a iya rage visibility ba (misali: idan parent method ɗin public,
ba za ka iya overriding shi da private ba).
5. Static methods ba a iya overriding (sai hiding).
📌 Amfanin Overriding:

 Don customization na behavior a child class.


 Yana bada damar polymorphism → abu ɗaya na iya yin ayyuka daban-daban.

🌟 Polymorphism a Java

🔹 Menene Polymorphism?

Polymorphism kalma ce daga Greek wadda ke nufin "yawan siffofi".


A Java, polymorphism yana nufin object ɗaya zai iya ɗaukar ayyuka daban-daban.

Wato, abu ɗaya na iya yin aiki daban-daban a lokuta daban-daban.

🔹 Nau’ikan Polymorphism a Java

1. Compile-time Polymorphism (Static Polymorphism)


o Ana cimma shi ta hanyar Method Overloading.
o Wani method ɗaya, amma yana da parameters daban-daban.
2. Runtime Polymorphism (Dynamic Polymorphism)
o Ana cimma shi ta hanyar Method Overriding.
o Method ɗaya a parent, amma child ya sake rubuta shi.

✨ 1. Compile-time Polymorphism (Overloading)


class Calculator {
int add(int a, int b) {
return a + b;
}

int add(int a, int b, int c) { // overloaded method


return a + b + c;
}
}

public class Main {


public static void main(String[] args) {
Calculator calc = new Calculator();
[Link]([Link](2, 3)); // 5
[Link]([Link](2, 3, 4)); // 9
}
}

Output:

5
9

✨ 2. Runtime Polymorphism (Overriding)


class Animal {
void sound() {
[Link]("Animal makes sound");
}
}

class Dog extends Animal {


@Override
void sound() {
[Link]("Dog barks");
}
}

class Cat extends Animal {


@Override
void sound() {
[Link]("Cat meows");
}
}

public class Main {


public static void main(String[] args) {
Animal a; // reference type

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

 Code Reusability: Sauƙaƙe rubutu da kulawa.


 Flexibility: Zaka iya yin ayyuka iri ɗaya ta hanyoyi daban-daban.
 Maintainability: Sauƙi wajen gyara code.

📌 Takaitawa

 Overloading = Compile-time polymorphism.


 Overriding = Runtime polymorphism.
 Polymorphism → babban ginshiƙi na OOP wanda ke bada damar abubuwa suyi ayyuka
iri-iri gwargwadon yanayi.

🌟 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:

 Lokacin da kake tuƙin mota → kana amfani da steering, brake, accelerator


 Amma ba ka san yadda engine yake aiki a ciki.
👉 Wannan shine abstraction.

🔹 Hanyoyin Abstraction a Java

1. Abstract Classes
2. Interfaces

✨ 1. Abstract Class

 Ana ayyana shi da abstract keyword.


 Zai iya samun abstract methods (ba su da body) da kuma normal methods (da body).
 Ba za a iya ƙirƙirar object daga abstract class ba.
 Child class dole ya override abstract methods.

abstract class Animal {


abstract void sound(); // abstract method (ba body)

void sleep() { // normal method


[Link]("Animal is sleeping");
}
}

class Dog extends Animal {


@Override
void sound() {
[Link]("Dog barks");
}
}

public class Main {


public static void main(String[] args) {
Dog d = new Dog();
[Link]();
[Link]();
}
}

Output:

Dog barks
Animal is sleeping

✨ 2. Interface

 Interface yana aiki kamar contract.


 Duk methods a ciki default abstract ne (idan ba a saka default ko static).
 Class da ya implement interface dole ya aiwatar da dukkan methods.
 Ana amfani da implements keyword.

interface Animal {
void sound(); // abstract by default
}

class Dog implements Animal {


@Override
public void sound() {
[Link]("Dog barks");
}
}

public class Main {


public static void main(String[] args) {
Animal a = new Dog();
[Link]();
}
}

Output:

Dog barks

🔑 Bambanci tsakanin Abstract Class da Interface


Abstract Class Interface

Ana amfani da extends Ana amfani da implements

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

 Yana ɓoye complexity.


 Yana ƙarfafa modularity.
 Yana bada security (ɓoye implementation).
 Yana bada damar flexibility → kowane child class na iya aiwatar da nasa yadda ya ga
dama.

🌟 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:

 Katin ATM → ka ga buttons da screen, amma bayanan ka (PIN, balance) an rufe su a


ciki, ba kowa zai iya samun damar ganin su ba.

🔹 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;
}

public void setAge(int age) {


if(age > 0) { // validation
[Link] = age;
} else {
[Link]("Invalid age!");
}
}

// Getter method
public String getName() {
return name;
}

public int getAge() {


return age;
}
}

public class Main {


public static void main(String[] args) {
Student s = new Student();

[Link]("Usman");
[Link](22);

[Link]([Link]() + " - " + [Link]());


}
}

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.

📌 Takaitawa (OOP Pillars)

1. Encapsulation → Rufe data + methods cikin class, amfani da getters/setters.


2. Abstraction → Nuna me ake yi, ɓoye yadda ake yi.
3. Inheritance → Gado daga class zuwa wani class.
4. Polymorphism → Abu ɗaya, ayyuka daban-daban.
Q1: What is a Constructor in Java?

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.

Q2: What are the types of constructors in Java?

Answer (English):
There are mainly two types of constructors in Java:

1. Default Constructor – A constructor with no parameters, automatically provided by


Java if no constructor is defined.
2. Parameterized Constructor – A constructor that accepts arguments to initialize an
object with specific values.

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.

Q3: Difference between a Constructor and a Method?

Answer (English):

 A constructor is used to initialize an object, while a method is used to perform actions.


 A constructor has the same name as the class, but a method can have any name.
 A constructor does not have a return type, but a method always has a return type.

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.

Q4: Can a constructor be overloaded?

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.

Q5: Can a constructor be inherited?

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.

Q6: What happens if we don’t define any constructor in a class?

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.

📘 Java OOP (Classes & Constructors) – Q&A (English & Hausa)


Q1: What is a Class in Java?

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...");
}
}

Q2: What is an Object in Java?

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:

Car myCar = new Car();

Q3: What is a Constructor in Java?

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";
}
}

Q4: What are the types of constructors in Java?

Answer (English):

1. Default Constructor – No parameters, Java creates it automatically if not defined.


2. Parameterized Constructor – Takes arguments to initialize object with specific values.

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;
}
}

Q5: Difference between Constructor and Method?

Answer (English):

 A constructor initializes objects, a method performs actions.


 Constructor has same name as class, method can have any name.
 Constructor has no return type, method must have return type.
Answer (Hausa):

 Constructor yana fara (initialize) object, method tana yin aiki.


 Constructor yana da suna iri ɗaya da class, method na iya samun kowanne suna.
 Constructor baya da return type, method tana da return type.

Q6: Can a constructor be overloaded?

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;
}
}

Q7: Can constructors be inherited?

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");
}
}

class Car extends Vehicle {


Car() {
super(); // Calls parent constructor
[Link]("Car constructor");
}
}

Q8: What happens if no constructor is defined in a class?

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.

Q9: Can a constructor be private?

Answer (English):
Yes, a constructor can be private. This is us

ually done in Singleton Design Pattern to restrict object creation.

Answer (Hausa):
Eh, za’a iya yin private constructor. Ana yin hakan yawanci a Singleton Design Pattern
domin hana ƙirƙirar objects masu yawa.

📘 Java OOP Revision Pack – Part 1 (Q1–Q6)

Q1: What is a Class in Java?


Answer (English):
A class is a blueprint or template in Java used to create objects. It defines attributes (variables)
and methods (functions) that describe the behavior of objects.

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...");
}
}

Q2: What is an Object in Java?

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:

Car myCar = new Car();

Q3: What is an Attribute in Java?

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
}

Q4: What is a Method in Java?

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...");
}
}

Q5: What are Modifiers in Java?

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.

Q6: What is the this keyword in Java?

Answer (English):
The this keyword in Java refers to the current object of the class. It is used to:

1. Differentiate between instance variables and parameters.


2. Call another constructor inside the same class.
3. Return the current object.

Answer (Hausa):
this keyword tana nufin object ɗin da yake a halin yanzu. Ana amfani da ita wajen:

1. Raba tsakanin instance variable da parameter.


2. Kiran wani constructor a cikin class ɗaya.
3. Komawa (return) da current object.

Example:

class Student {
String name;

Student(String name) {
[Link] = name; // this differentiates instance variable
}
}

📘 Java OOP Revision Pack – Part 2 (Q7–Q12)

Q7: What is a Constructor in Java?


Answer (English):
A constructor is a special method used to initialize an object.

 It has the same name as the class.


 It has no return type.
 It is called automatically when an object is created.

Answer (Hausa):
Constructor wata special method ce da ake amfani da ita wajen fara (initialize) object.

 Sunanta yana daidai da class.


 Ba ta da return type.
 Ana kiranta ta atomatik lokacin da aka ƙirƙiri object.

Types of Constructors:

1. Default constructor (no parameters)


2. Parameterized constructor (with parameters)

Example:

class Car {
String color;

// Default constructor
Car() {
color = "Black";
}

// Parameterized constructor
Car(String c) {
color = c;
}
}

Q8: What is Inheritance in Java?

Answer (English):
Inheritance is an OOP concept where one class (child/subclass) inherits properties and behaviors
of another class (parent/superclass).

 It promotes code reusability.


 The keyword extends is used.

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...");
}
}

class Car extends Vehicle {


void drive() {
[Link]("Car is driving...");
}
}

Q9: Difference between Overloading and Overriding

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");
}
}

class Dog extends Animal {


@Override
void sound() {
[Link]("Dog barks");
}
}

Q10: What is Encapsulation?

Answer (English):
Encapsulation is the process of wrapping data (variables) and methods into a single unit (class)
and restricting direct access using access modifiers.

 Achieved using private variables + getters/setters.

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.

 Ana yin shi da private variables + getter/setter methods.

Example:

class Student {
private String name;

public String getName() {


return name;
}

public void setName(String n) {


name = n;
}
}

Q11: What is Abstraction?

Answer (English):
Abstraction is the process of hiding implementation details and showing only essential features
to the user.

 Implemented using abstract classes or interfaces.


Answer (Hausa):
Abstraction hanya ce ta ɓoye cikakken implementation kuma a nuna muhimman abubuwa
kawai ga mai amfani.

 Ana aiwatar da shi da abstract classes ko interfaces.

Example:

abstract class Animal {


abstract void sound(); // abstract method
}

class Dog extends Animal {


void sound() {
[Link]("Dog barks");
}
}

Q12: What is Polymorphism?

Answer (English):
Polymorphism means "many forms". It allows one object to behave in multiple ways.

 Compile-time polymorphism → method overloading.


 Runtime polymorphism → method overriding.

Answer (Hausa):
Polymorphism na nufin "siffa da yawa". Yana bawa object damar yin aiki ta hanyoyi daban-
daban.

 Compile-time polymorphism → overloading.


 Runtime polymorphism → overriding.

Example:

class Animal {
void sound() {
[Link]("Animal makes sound");
}
}

class Dog extends Animal {


void sound() {
[Link]("Dog barks");
}
}

class Cat extends Animal {


void sound() {
[Link]("Cat meows");
}
}

// Runtime polymorphism
Animal a = new Dog();
[Link](); // Dog barks
// Abstract class (Abstraction)

abstract class Person {

String name;

int age;

// Constructor

Person(String name, int age) {

[Link] = name;

[Link] = age;

// Abstract method

abstract void role();

// Concrete method

void displayInfo() {

[Link]("Name: " + name + ", Age: " + age);

// Encapsulation + Inheritance

class Student extends Person {

private String course; // Encapsulation (private attribute)

protected double gpa; // Protected modifier

static String university = "FUGUS"; // Static variable


// Constructor overloading

Student(String name, int age) {

super(name, age);

[Link] = "Unknown";

[Link] = 0.0;

Student(String name, int age, String course, double gpa) {

super(name, age);

[Link] = course;

[Link] = gpa;

// Getters and Setters (Encapsulation)

public String getCourse() {

return course;

public void setCourse(String course) {

[Link] = course;

// Method overriding

@Override
void role() {

[Link]("I am a student at " + university);

// Method overloading

void study() {

[Link](name + " is studying.");

void study(String subject) {

[Link](name + " is studying " + subject);

// Another subclass

class Teacher extends Person {

final String subject; // Final variable (cannot change once set)

Teacher(String name, int age, String subject) {

super(name, age);

[Link] = subject;

// Method overriding (Polymorphism)

@Override
void role() {

[Link]("I am a teacher of " + subject);

// Main class

public class OOPDemo {

public static void main(String[] args) {

// Using constructors

Student s1 = new Student("Usman", 21);

Student s2 = new Student("Aisha", 20, "Computer Science", 3.8);

Teacher t1 = new Teacher("Mr. Bello", 40, "Java Programming");

// Display info

[Link]();

[Link]();

[Link]();

// Using encapsulation

[Link]("Mathematics");

[Link]([Link]());

// Using overloading

[Link]();
[Link]("Java");

// Polymorphism (runtime)

Person p;

p = s1; // Student object as Person

[Link]();

p = t1; // Teacher object as Person

[Link]();

🔎 Breakdown (English + Hausa)

 Class & Object: Student, Teacher, Person → created in main().


 Attributes: name, age, course, gpa.
 Methods: study(), getCourse(), setCourse(), displayInfo().
 Constructors: Student() overloaded with different parameters.
 Modifiers:
o private → course
o protected → gpa
o static → university
o final → subject
 this keyword: differentiates between attribute & parameter in constructors.
 Inheritance: Student and Teacher extend Person.
 Overloading: study() method.
 Overriding: role() method in Student and Teacher.
 Encapsulation: course variable with getter/setter.
 Abstraction: Person is abstract with abstract method role().
 Polymorphism: Person p; p = new Student(...); [Link]();

You might also like