Наследование презентация

Содержание

06.09.2004 Кафедра ОСУ, Java 2004 Наследование Наследование позволяет определить очень общий класс, а затем (позже) определять более специализированные классы простым добавлением новых деталей в созданное более общее определение класса. При

Слайд 106.09.2004
Кафедра ОСУ, Java 2004
Наследование
Наследование позволяет использовать существующий класс для определения

новых классов, т.е. способствует многократному использованию программного обеспечения.
Полиморфизм — это такой способ применения наследования, при котором различные виды объектов используют различные определения (различные действия) одного и того же имени метода.


Каков отец, такой и сын


Слайд 206.09.2004
Кафедра ОСУ, Java 2004
Наследование
Наследование позволяет определить очень общий класс, а затем

(позже) определять более специализированные классы простым добавлением новых деталей в созданное более общее определение класса.
При этом экономится труд программиста, поскольку более специализированный класс наследует все свойства общего класса, и программисту, остается запрограммировать только новые свойства класса



Слайд 306.09.2004
Кафедра ОСУ, Java 2004
Наследование
EXAMPLE. Определение базового (супер) класса
public class Person

{
private String name;
public Person() {
name = "Пока без имени.";
}
public Person(String initialName) {
name = initialName;
}


Слайд 406.09.2004
Кафедра ОСУ, Java 2004
Наследование
public void setName(String newName){

name = newName;
}
public String getName( ){
return name;
}
public void writeOutput( ) { System.out.println("Имя: " + name);
}


Слайд 506.09.2004
Кафедра ОСУ, Java 2004
Наследование
public boolean sameName(Person

otherPerson){
return
(this.name.equalsIgnoreCase(otherPerson.
name));
}
}
//p1.name.equalsIgnoreCase(p2.name)

Слайд 606.09.2004
Кафедра ОСУ, Java 2004
Производные классы
Производный класс (derived class) — это

класс, определяемый путем добавления переменных реализации и методов в некоторый уже существующий класс.
Существующий класс, на базе которого строится производный, называется базовым классом (base class).
Производный класс имеет все переменные реализации и методы базового класса плюс все дополнительные переменные реализации и методы, которые программист считает нужным добавить

Слайд 706.09.2004
Кафедра ОСУ, Java 2004
Производные классы
Синтаксис
public class Имя_Производного_Класса

extends Имя_Базового_Класса {
Объявления_Добавляемых_Переменных_
Реализации
Объявления_Добавляемых_И_Переопред
еляемых_Методов
}

Слайд 806.09.2004
Кафедра ОСУ, Java 2004
Производные классы
// Определение производного класса
public class Student

extends Person {
private int studentNumber;
public Student ( ){
super () ;
studentNumber = 0;
// 0 - означает отсутствие номера.
}

Слайд 906.09.2004
Кафедра ОСУ, Java 2004
Производные классы
public Student(String initialName, int



initialStudentNumber) {
super(initialName);
studentNumber = initialStudentNumber;
}
public void reset (String newName, int

newStudentNumber);{
setName (newName) ;
studentNumber = newStudentNumber;
}


Слайд 1006.09.2004
Кафедра ОСУ, Java 2004
Производные классы
public int getstudentNumber() { return

studentNumber;
}
public void setstudentNumber(int
newStudentNumber) {
studentNumber = newStudentNumber;
}


Слайд 1106.09.2004
Кафедра ОСУ, Java 2004
Производные классы
public void writeOutput() {// переопределение метода

баз.класса
System, out. println( "Имя: " + getName( );
System.out.println("Номер студента : " +
studentNumber); }
public boolean equals(Student otherStudent) {
return (this. sameName (otherStudent)
&& (this. studentNumber == otherStudent.
studentNumber) )
}
}

Слайд 1206.09.2004
Кафедра ОСУ, Java 2004
Производные классы
….
Student s1 = new Student ();
Student

s2 = new Student(“Ringo Starr”,
5);
s1.setName (“Garry Potter”);
s1.setStudentNumber (20001);
if s1.equals (s2)
System.out.println (‘’ Один и тот же’’);…

Слайд 1306.09.2004
Кафедра ОСУ, Java 2004
Производные классы
Переопределение методов
Если в производный

класс включить определение метода с таким же именем и с таким же количеством параметров таких же типов, как в определении метода в базовом классе,
то для производного класса это новое определение метода заменяет старое.
(writeOutput)

Слайд 1406.09.2004
Кафедра ОСУ, Java 2004
Производные классы
В таких случаях тип значения,

возвращаемого переопределяемым методом, должен совпадать с типом значения, возвращаемого методом в базовом классе.
Т.е., при переопределении метода нельзя менять тип значения, возвращаемого этим методом.

Слайд 1506.09.2004
Кафедра ОСУ, Java 2004
Производные классы
Если метод в производном

классе имеет другое количество параметров или параметры другого типа по сравнению с методом в базовом классе, то производный класс будет иметь оба метода –
перегрузка имени метода
Класс Student: |
public String getName (String title){
return (title + getName());
}
// 2 метода getName


Слайд 1606.09.2004
Кафедра ОСУ, Java 2004
Производные классы
Если данное

определение метода не должно заменяться новым определением в производном классе, достаточно добавить в заголовок метода модификатор final
Если метод объявляется с использованием модификатора final, компилятор тем самым получает больше информации о характере его использования, что позволяет ему сгенерировать для данного метода более эффективный код.
С помощью модификатора final можно объявить целый класс, и тогда его нельзя использовать в качестве базового класса для создания из него других (производных) классов.


Слайд 1706.09.2004
Кафедра ОСУ, Java 2004
Производные классы
К переменной реализации (или методу),

которая закрыта в базовом классе, нельзя получить доступ по имени в определении метода любого другого класса, даже в определении метода производного класса.
public void reset(String newName, int newStudentNumber) {
name = newName;//НЕДОПУСТИМО
//setName (newName) ;….

Слайд 1806.09.2004
Кафедра ОСУ, Java 2004
Производные классы
Когда мы применяем фразу

super это означает обращение к конструктору базового класса:
super (initialName);
// запрещено использовать
// Person (initialName)
Если обращение к конструктору базового класса отсутствует, Java вставит обращение к конструктору базового класса, действующему по умолчанию,т.е.
Java автоматически вставит вызов super ()

Слайд 1906.09.2004
Кафедра ОСУ, Java 2004
Производные классы
Определяя конструктор производного класса, в

качестве имени конструктора класса можно использовать зарезервированное слово super.
Обращение к super должно быть первым действием, предпринимаемым конструктором.

Слайд 2006.09.2004
Кафедра ОСУ, Java 2004
Производные классы
public Student(String initialName,

int initialStudentNumber) {
super(initialName);
studentNumber = initialStudentNumber;
}
использование this обеспечивает вызов конструктора того же класса, а не конструктора базового класса.


Слайд 2106.09.2004
Кафедра ОСУ, Java 2004
Производные классы
добавить в класс student


public Student(String initialName) {
this(initialName, 0);
}
//вызов конструктора
// public Student(String initialName, int initialStudentNumber)


Слайд 2206.09.2004
Кафедра ОСУ, Java 2004
Производные классы
Слово super можно также использовать

для вызова метода базового класса, который переопределяется в производном классе
//альтернативное определение метода
//writeOutput для класса Student
public void writeOutput () {
super.writeOutput() ;
System.out.println("Номер студента: " +
studentNumber);}


Слайд 2306.09.2004
Кафедра ОСУ, Java 2004
Многоуровневые производные классы
Из любого производного класса

можно создать производные классы.
public class Undergraduate extends
Student {
private int level;// 1 для студента
// первого курса,
//2 для студента-второкурсника и т.д.
public Undergraduate() {
super();
level = 1;
}

Слайд 2406.09.2004
Кафедра ОСУ, Java 2004
Многоуровневые производные классы
public Undergraduate (String initialName,
int initialStudentNumber,

int initialLevel){
super(initialName, initialStudentNumber);
level = initialLevel;
}
public int getLevel(){
return level;
}
public void setLevel (int newLevel){
level = newLevel;
}

Слайд 2506.09.2004
Кафедра ОСУ, Java 2004
Многоуровневые производные классы
public void reset(String newName,

int newStudentNumber, int newLevel){
reset(newName, newStudentNumber);
level = newLevel;
}
public void writeOutput() {
super.writeOutput() ;
System.out.println("Уровень студента: " +
level)
}….

Слайд 2606.09.2004
Кафедра ОСУ, Java 2004
Многоуровневые производные классы
При вызове конструктора класса

Undergraduate (с помощью оператора new)
сначала вызывается конструктор класса Person,
затем конструктор класса Student,
а затем выполняются все операторы, следующие за вызовом super в конструкторе класса Undergraduate.

Слайд 2706.09.2004
Кафедра ОСУ, Java 2004
Многоуровневые производные классы
Объект производного класса имеет

несколько типов
Объект производного класса имеет тип этого производного класса, а также тип базового класса, и более того, тип каждого из классов-предков
В Java каждый класс является потомком встроенного класса Object.
Поэтому каждый объект каждого класса имеет тип Object, а также тип своего класса (а также тип любого другого класса-предка).

Слайд 2806.09.2004
Кафедра ОСУ, Java 2004
Многоуровневые производные классы
Поскольку объект производного

класса имеет тип всех своих классов-предков (также как свой "собственный" тип), то объект этого класса можно присвоить переменной любого типа предка, но не наоборот:
Person p1, р2;
p1 = new Student ();
р2 = new Undergraduate ();
Student s = new Person(); //НЕВЕРНО!

Слайд 2906.09.2004
Кафедра ОСУ, Java 2004
Многоуровневые производные классы
Должны существовать

методы, которые каждый класс наследует от класса Object.
Например, каждый объект наследует методы equals и toString
Метод toString должен возвратить все данные, содержащиеся в объекте, преобразованными в тип String.

Слайд 3006.09.2004
Кафедра ОСУ, Java 2004
Многоуровневые производные классы
Нужно переопределить метод toString, чтобы он

возвращал соответствующее string-представление для данных, содержащихся в объектах определяемого вами класса.
public String toString() {
return ("Имя: “ + getName ()
+ “\nНомер студента: "
+ Integer.toString(studentNumber));
}

Слайд 3106.09.2004
Кафедра ОСУ, Java 2004
Многоуровневые производные классы

Student s = new Student (“Студент

Вася”,
2004);
System.out.println (s.toString());…

Обратная связь

Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое ThePresentation.ru?

Это сайт презентаций, докладов, проектов, шаблонов в формате PowerPoint. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами с другими пользователями.


Для правообладателей

Яндекс.Метрика