Логин:   Пароль:




Новости
Рассылки
Форум
Поиск


Java
- Апплеты
- Вопрос-ответ
- Классы
- Примеры
- Руководства
- Статьи
- IDE
- Словарь терминов
- Скачать

Мобильная Java
- Игры
- Примеры
- Статьи
- WAP, WML и пр.

JavaScript
- Вопрос-ответ
- Примеры
- Статьи

Веб-мастеринг
- HTML
- CSS
- SSI

Разминка для ума
Проекты
Книги
Ссылки
Программы
Юмор :)




Rambler's Top100

РассылкиАрхив Java programmingВыпуск 24-й

Java programming выпуск 24-й

Здравствуйте дорогие читатели!

Начинающим

Классы (продолжение)

Наследование

Вторым фундаментальным свойством объектно-ориентированного под­хода является наследование (первый – инкапсуляция). Классы-потомки имеют возможность не только создавать свои собственные переменные и методы, но и наследовать переменные и методы классов-предков. Классы-потомки принято называть подклассами. Непосредственного предка данного класса называют его суперклассом. В очередном примере показано, как расширить класс Point таким образом, чтобы включить в него третью координату z.


class Point3D extends Point 
{ 
 int z; 
 Point3D(int x, int y, int z)
 { 
  this.x = x; 
  this.у = у; 
  this.z = z;
 } 

 Point3D()
 { 
  this(-1,-1,-1); 
 }
} 

В этом примере ключевое слово extends используется для того, чтобы сообщить транслятору о намерении создать подкласс класса Point. Как видите, в этом классе не понадобилось объявлять переменные х и у, по­скольку Point3D унаследовал их от своего суперкласса Point.

Вероятно, программисты, знакомые с C++, очевидно ожидают, что сей­час мы начнем обсуждать концепцию множественного наследования. Под множественным наследованием понимается создание класса, имеющего несколько суперклассов. Однако в языке Java ради обеспечения высокой производительности и большей ясности исходного кода множественное наследование реализовано не было. В большинстве случаев, когда требуется множественное наследование, проблему можно решить с помощью имеющегося в Java механизма интерфейсов.

super

В примере с классом Point3D частично повторялся код, уже имев­шийся в суперклассе. Вспомните, как во втором конструк­торе мы использовали this для вызова первого конструктора того же класса. Аналогичным образом ключевое слово super позволяет обратить­ся непосредственно к конструктору суперкласса (в Delphi / С++ для этого используется ключевое слово inherited).


class Point3D extends Point
{ 
 int z; 
 Point3D(int x, int у, int z)
 { 
  super(x, y);     // Здесь мы вызываем конструктор суперкласса
  this.z=z; 
 }
 public static void main(String       args[])
 { 
  Point3D p = new Point3D(10, 20, 30); 
  System.out.println( " x = " +  p.x + " y = " + p.y + " z = " + p.z); 

 }
} 

Вот результат работы этой программы:
x = 10 у = 20 z = 30

Тема "на заказ"

Мобильная Java

В сегодняшнем номере я бы хотел затронуть тему мобильной Java, а точнее проблему переносимости программ.

Мной была написана небольшая игрушка «JavaPortal Championship racing F1» – гонки F1.

Я попытался сделать её более универсальной, так чтобы она работала на большинстве мобильных телефонов. Но под рукой у меня не нашлось такого множества телефонов, и я воспользовался эмуляторами.

Я использовал эмуляторы следующих телефонов:

  • Siemens C55/sl45i;
  • Почти весь ряд Motorola;
  • Nokia 6310;
  • Sony Ericsson P800;
  • и стандартные из WTK.

На всех телефонах была хорошая картинка, за исключением некоторых моделей с маленькими ( очень маленькими) экранами где картинка была урезана сверху. На модели Sony Ericsson P800 экран казался слишком пустоватым, так как игрушка все же рассчитана на массовые модели, а не на таких «монстров».

Единственная проблема возникла на всех моделях Siemens, игрушка мигала и тормозила. Я думаю это связано с некоторыми недоработками в JVM Siemens.

Эта же картина наблюдалась и на реальных телефонах, хотя тестируемых моделей было совсем мало.

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

Подробнее об игре можете посмотреть тут, там же ссылки на файлы.

Присылайте свои отзывы и предложения мне на E-mail.

Вопрос - ответ

Вопрос: Скажите, как я могу использовать RMI.
giorgi

Ответ:
Посмотрите архив рассылки, в 5 и 6 выпуске мы рассматривали основы работы с RMI.

Вопрос: Добрый день. Не подскажите как можно автоматически получать (обрабатывать) почтовые сообщения используя Java технологии.
Victor213

Ответ:
Можно использовать Java Mail API

Вопрос: Почему-то в апплете не могу нарисовать линии и всякую прочую лабуду. Везде написано что надо делать так

public void paintComponent(Graphics g)
{
super.paintcomponent(g);
........
}
а у меня компилятор ругается на супер, без супер ничего не выводит.
bob

Ответ:
В апплете нет метода paintComponent(Graphics g), вот и ругается.
Надо использовать paint(Graphics g):


import java.applet.*;
import java.awt.*;
public class Applet1 extends Applet
{
 public Applet1()
 {
 }
 public void paint(Graphics g)
 {
  g.drawLine(10,10,100,100);
 }
}

Вопрос: Здравствуйте. Как в jave отобразить html-страничку в апплет или в какое-нибудь окно. Я нашел пакет javax.swing.text.html, но так и не понял его возможности.

Ответ:
Вот следующим образом:


JEditorPane jp = new JEditorPane();
 try
 {
  URL url = getClass().getResource("1.html");
  jp = new JEditorPane(url);
  jp.setEditable(false);
 }
 catch (Exception ex)
 {
  jp.setText("Loading error ");
 }
 getContentPane().add(jp);
Правда это будет просто неактивная страничка. Для перехода по ссылкам. Необходимо создать HyperlinkListener обрабатывающий события.
Как это делается можете посмотреть в разделе «Программный код…»

Вопрос: В каких случаях лучше использовать String, а в каких StringBuffer?

Ответ: Вот посмотрте String против StringBuffer.

Программный код…


import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.html.*;
import java.io.*;
import java.net.URL;

public class Applet1 extends JApplet
{
 JEditorPane jp = new JEditorPane();
 public Applet1()
 {
  try
  {
   URL url = getClass().getResource("1.html");
   jp = new JEditorPane(url);
   jp.setEditable(false);
   jp.addHyperlinkListener(createHyperLinkListener());
  }
  catch (Exception ex)
  {
   jp.setText("Loading error ");
  }
  getContentPane().add(jp);
 }


 public HyperlinkListener createHyperLinkListener()
 {
  return new HyperlinkListener()
  {
   public void hyperlinkUpdate(HyperlinkEvent e)
   {
    if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED)
    {
     if (e instanceof HTMLFrameHyperlinkEvent)
     {
      ((HTMLDocument)jp.getDocument()).processHTMLFrameHyperlinkEvent(
                       (HTMLFrameHyperlinkEvent)e);
     } else
     {
      try
      {
       jp.setPage(e.getURL());
      }
      catch (IOException ioe)
      {
       jp.setText("IOE: " + ioe);
      }
     }
    }
   }
  };
 }
}

JavaScript

Вопрос: У меня такое задание: "Менять цвет фона с интервалом 1сек отдельно генерируя красную, зелёную и синюю компоненты цвета". Главная проблема - как эти компоненты сгрупировать в одно число в 16-ричном коде, либо сделать так чтобы воспринималась каждая компонента по отдельности. Подскажите пожалуйста в чём здесь ошибка.


<SCRIPT>
function flash(){ 
s=1000; 
k=0; 
while(k<5) { 
k++; 
colred = Math.round(0xff*Math.random()); 
colgreen = Math.round(0xff*Math.random()); 
colblue = Math.round(0xff*Math.random()); 
setTimeout('document.bgColor=colred,colgreen,colblue', s*k) 
}} 
</SCRIPT>
</HEAD>
<BODY bgcolor="00ff00">
<hr>
<INPUT TYPE="button" value=start onClick="flash()">
</body>

Max

Ответ: Я бы сделал вот так:


<html>

<head>
<script language="JavaScript">
s=1000; 
function flash() 
{ 
colred = Math.round(0xff*Math.random()); 
colgreen = Math.round(0xff*Math.random()); 
colblue = Math.round(0xff*Math.random()); 
aaa=""+colred+""+colgreen+""+colblue; 
document.bgColor=aaa; 
setTimeout('flash()', s); 
} 


</script>
</head>

<body bgcolor="00ff00" onLoad='flash()'>
</body>
</html>

Вопрос: Помогите разобраться с применением фильтров для создания эффектов загрузки изображений.
JOKER

Ответ: Вот посмотрите пример.
Но данные фильтры работают только в IE.

Вопросы присылайте на E-mail [email protected] с пометкой "Вопрос по Java".
Или задавайте их на форуме

Жду вопросов и предложений.

Юрий Ладик.



"Программирование на персональном компьютере. Практическое руководство с примерами по языкам программирования высокого уровня - специальное издание"
Подробнее>>
Заказать>>


Р. Р. Мухамедзянов
"Серверные приложения на языке Java"
Подробнее>>
Заказать>>

Узнай о чем ты на самом деле сейчас думаешь тут.


[an error occurred while processing this directive]



Apache Struts 2.0.11
Apache MyFaces Trinidad Core 1.2.3.
Sun переводит мобильные устройства с Java ME на Java SE
Хакерская атака!



Выпуск 29-й
Выпуск 28-й
Выпуск 27-й
Выпуск 26-й
Выпуск 25-й
Выпуск 24-й
Выпуск 23-й
Выпуск 22-й
Выпуск 21-й
Выпуск 20-й
Выпуск 19-й
Выпуск 18-й
Выпуск 17-й
Выпуск 16-й
Выпуск 15-й
Выпуск 14-й
Выпуск 13-й
Выпуск 12-й
Выпуск 11-й
Выпуск 10-й
Выпуск 9-й
Выпуск 8-й
Выпуск 7-й
Выпуск 6-й
Выпуск 5-й
Выпуск 4-й
Выпуск 3-й
Выпуск 2-й
Выпуск 1-й