Загрузил Sa'wle Utemuratova

14-Lekciya

реклама
14-Lekciya: Static hám final maydanlar hám metodlar. Kóriniwshilik
modifikatorları
Joba:
1. Modifikatolar
2. Statikalıq maydanlar, metodlar;
3. Final maydanlar, metodlar hám klasslar.
</TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV>
Modifikatorlar
Javada barlıq klass maydanları hám metodları kóriniwshilik
modifikatorlarına iye boladı. Javada modifikatorlardıń tómendegishe
túrleri bar:
 public: ashıq klass hám klass aǵzaları bolıp, bul modifikator menen
táriyplengen maydanlar hám metodlar, qálegen paketdegi klasslar
ushın kórinedi;
 private: jabıq klass hám klass aǵzaları bolıp, bul modifikator menen
táriyplengen maydanlar hám metodlar, tek ǵana sol klass ishinde
ǵana kórinedi;
 protected:
bul modifikator menen táriyplengen maydanlar hám
metodlar, sol paket ishindegi birneshe klasslar yamasa basqa
paketdegi miyras klasslar ushın kórinedi
</TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV>
Modifikatorlar
 default modifikator: maydan hám metodlar aldına joqarıdaǵı
modifikatordıń (public, private, protected) heshqaysısı jazılmasa
onda default modifikator boladı. Bul modifikatorda tek ǵana sol paket
ishindegi klasslar ushın kórinedi.
ruxsat
Tip
Gilt sózler
Óz klası
Óz paketi
Miyras
klass
Barlıq
klasslar
jabıq
private
bar
joq
joq
joq
paket
(modifikator joq)
bar
bar
joq
joq
qorǵalǵan
protected
bar
bar
bar
joq
ashıq
public
bar
bar
bar
bar
</TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV>
Mısal 1
class Person{
String name;
protected int age;
public String address;
private String phone;
public Person(String name, int age, String address, String phone){
this.name = name;
this.age = age;
this.address = address;
this.phone = phone;
}
public void displayName(){
System.out.println("Name: "+ name);
}
void displayAge(){
System.out.println("Age: "+ age);
}
</TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV>
Mısal 1
private void displayAddress(){
System.out.println("Address: "+address);
}
protected void displayPhone(){
System.out.println("Phone: "+phone);
}
}
public class Program{
public static void main(String[] args) {
Person anna = new Person("Anna", 23, "Nukus", "+12334567");
anna.displayName();
// isleydi, metod public
anna.displayAge();
// isleydi, metod default modifikator
anna.displayPhone();
// isleydi, metod protected
anna.displayAddress(); // qáte!, metod private
</TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV>
Mısal 1
System.out.println(anna.name);
System.out.println(anna.address);
System.out.println(anna.age);
System.out.println(anna.phone);
//
//
//
//
isleydi, default modifikator
isleydi, public
isleydi, protected
qáte!, private
}
}
Bunda maydanlardan phone maydanınan basqa hámmesi isleydi.
Sebebi, phone maydanınıń bir ózi private (jabıq) modifikatorına iye. Al
metodlardan displayAddress metodın basqa klass ishinde shaqırıp
bolmaydı. Sebebi, modifikatorı private.
</TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV>
Inkapsulyaciya
Soraw payda boladı, ne ushın barlıq maydanlar hám metodlardı public modifikatorı menen
táriyplep, barlıq klasslar ushın ashıq etip paydalanıwǵa bolmaydı ma? Eger basqa klass
tuwrıdan-tuwrı maydandı ózgertetuǵın bolsa, programma islewi dawamında korrektli emes
mánis jiberiwi múmkin. Máselen, adam jası ushın teris san. Hár qiylı modifikatorlardı kerekli
jerinde paydalanıw, programmanıń durıs islewine alıp keledi. Bul modifikatorlardan
paydalanıp kóriniwsheńlik oblastin ózgertiw inkapsulyaciya delinedi.
public class Program{
public static void main(String[] args) {
Person anna = new Person("Anna", 23);
System.out.println(anna.getAge());
anna.setAge(25);
System.out.println(anna.getAge());
anna.setAge(123456);
System.out.println(anna.getAge());
}
}
// 23
// 25
// 25
</TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV>
Mısal 2
class Person{
private String name;
private int age;
public Person(String name, int age){
this.name = name;
this.age = age;
}
public String getName(){
return this.name;
}
public void setName(String name){
this.name = name;
}
public int getAge(){
return this.age;
}
public void setAge(int age){
if(age > 0 && age < 110)
this.age = age;
}
}
</TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV>
Statikalıq maydanlar, metodlar hám konstantalar
Javada ápiwayı maydanlar, metodlardan basqa statikalıq maydanlar,
metodlar bar. Máselen, tiykarǵı main metodı statikalıq metod esaplanadı.
public static void main(String[] args) {
}
Statikalıq maydanlar, metodlardı táriyplewde static gilt sózi isletiledi.
Statikalıq emes maydanlarda klasslardıń obyektlerin jaratıw waqtında hár
bir obyekttiń óziniń nusqası jaratıladı, al statikalıq maydanlarda bir klass
ushın ulıwma jaratıladı.
Statikalıq maydanlar hám metodlardan paydanlanıw waqtında klass
obyektin jaratpay turıpta isletiw múmkin.
</TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV>
Mısal 3
public class Program{
public static void main(String[] args) {
Person tom = new Person();
Person bob = new Person();
tom.displayId();
// Id = 1
bob.displayId();
// Id = 2
System.out.println(Person.esaplagish); // 3
// esaplaǵıshtı ózgertemiz
Person.esaplagish = 8;
Person sam = new Person();
sam.displayId();
// Id = 8
}
}
</TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV>
Mısal 3
class Person{
private int id;
static int esaplagish=1;
Person(){
id = esaplagish++;
}
public void displayId(){
System.out.println("Id: "+id);
}
}
</TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV>
Mısal 4
public class Program{
public static void main(String[] args) {
Person.displayCounter();
// Counter: 1
Person tom = new Person();
Person bob = new Person();
Person.displayCounter();
// Counter: 3
}
}
class Person{
private int id;
private static int counter = 1;
Person(){
id = counter++;
}
// statikaliq metod
public static void displayCounter(){
System.out.println("Counter: "+counter);
}
public void displayId(){
System.out.println("Id: "+id);
}
}
</TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV>
Mısal 5
Klass ishindegi statikalıq maydanlar hám metodlardan klass obyektin
jaratpastan turıp paydalanıwǵa boladı.
public class Program{
public static void main(String[] args) {
System.out.println(Amel.qosiw(9, 12));
System.out.println(Amel.aliw(9, 12));
System.out.println(Amel.kobeytiw(9, 12));
}
}
class Amel{
static int qosiw(int x, int y){
return x + y;
}
static int aliw(int x, int y){
return x - y;
}
static int kobeytiw(int x, int y){
return x * y;
}
}
// 21
// -3
// 108
</TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV>
Final gilt sózi
Ózgeriwshilerdiń aldına final gilt sózi jazılsa, olar konstantaǵa
aylanatuǵını sizge málim. Mısalı,
final double PI = 3.14;
Eger metod aldına final gilt sózi jazılsa, onda bul metodtı basqa
miyrasxor klasslarda qayta jazıp bolmaydı. Yaǵnıy palimorfizm islew
múmkinshiligin bermeydi. Mısalı,
public final void metod(){
}
Eger final gilt sózi klass aldına jazılsa, onda bunda klasslardıń miyrasxor
klası bolmaydı. Mısalı,
public final MyClass{
}
</TITUNF></PI></PROGRAMMALASTIRIW></A.B.ORINBAEV>
Tákirarlaw sorawları
 Modifikator degenimiz ne?
 Modifikatorlardıń qanday túrleri bar?
 public penen protected modifikatorlarınıń parqı qanday?
 Statikalıq maydanlar hám metodlardıń ápiwayılardan parqı nede?
 Eger klass aldına final gilt sózi jazılsa, klass qalay ózgeredi?
Скачать