对象多态性

  • 本文关键字:多态性 对象 java
  • 更新时间 :
  • 英文 :


我有一个学校项目,它有一个logIn,并使用与帐户对应的方法显示一个表,但当我使用其他帐户登录时,它也会调用主类表。请帮帮我,我是一名it一年级学生,这是我的第一个项目。如果有任何帮助,我们将不胜感激。

以下是源代码:登录:

public class LogIn implements ActionListener{
//GUI
static JLabel userLabel;
static JTextField userText;
static JLabel passwordLabel;
static JPasswordField passwordText;
static JButton loginButton ;
static JLabel success;
public static void main(String[]args) {    

JFrame frame = new JFrame("Activities/Task Manager Log in");
frame.setSize(350, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);  
JPanel panel = new JPanel();    
frame.add(panel);

placeComponents(panel);
frame.setVisible(true);
}
private static void placeComponents(JPanel panel) {
panel.setLayout(null);
userLabel = new JLabel("User");
userLabel.setBounds(10,30,80,25);
panel.add(userLabel);
userText = new JTextField(20);
userText.setBounds(100,30,165,25);
panel.add(userText);
passwordLabel = new JLabel("Password");
passwordLabel.setBounds(10,70,80,25);
panel.add(passwordLabel);
passwordText = new JPasswordField(20);
passwordText.setBounds(100,70,165,25);
panel.add(passwordText);
loginButton = new JButton("Login");
loginButton.setBounds(10, 110, 80, 25);
loginButton.addActionListener(new LogIn());
panel.add(loginButton);

success = new JLabel("");
success.setBounds(10, 140, 300, 25);
panel.add(success);

}
@Override
public void actionPerformed(ActionEvent arg0) {
String user = userText.getText();
String password = passwordText.getText();
if (user.equals("Rod Vince Tolosa")&& password.equals("123456") ) {
success.setText("Login Successful!");
Tolosa.showtable();
}
else if (user.equals("Paul Naethan Bustillo")&& password.equals("654321") ) {
success.setText("Login Successful!");
Bustillo.showtable();
}
else if (user.equals("Christia Anna Sarguet")&& password.equals("123123") ) {
success.setText("Login Successful!");
Sarguet.showtable();
}
else {
JOptionPane.showMessageDialog(null, "Invalid Login Details");
userText.setText(null);
passwordText.setText(null);
}
}

}

表格类:

public class Tolosa {    

public JFrame Tasks;    
Tolosa(){    
Tasks=new JFrame("Rod Vince Tolosa Tasks/Activities");    
String column[]={"SUBJECT","ACTIVITY","DATE","TIME"};
String data[][]={{"STS","Film Review","05/21/21","12:00 AM"},
{"Entrepreneurial Mind","Final Paper","05/15/21","4:30 PM"},    
{"Purposive Communication","Task 8","05/27/21","11:59 PM"}, 
{"GEPC","Poster Project","06/03/21","12:00 AM"},
{"InfoMan","Project Database","06/08/21","1:30 PM"},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""}};         
JTable jt=new JTable(data,column);    
jt.setBounds(30,40,200,300);          
JScrollPane sp=new JScrollPane(jt);    
Tasks.add(sp);          
Tasks.setSize(650,400);    
Tasks.setVisible(true);    
Tasks.setLocationRelativeTo(null);
}    
public static void showtable() {    
new Tolosa();    
}     
}
//Inheritance
class Bustillo extends Tolosa{
public JFrame Tasks;    
Bustillo(){    
Tasks=new JFrame("Paul Naethan Bustillo Tasks/Activities");    
String column[]={"COURSE SUBJECT","ACTIVITY","DEADLINE","TIME"};
String data[][]={ {"Probability and Statistics","Final Quiz","06/3/21","4:30 PM"},    
{"Entrepreneurial Mind","Final Paper","05/15/21","4:30 PM"},    
{"Purposive Communication","Task 7","05/19/21","11:59 PM"}, 
{"GEPC","Poster Project","06/03/21","12:00 AM"},
{"Information Management","Final Project Presentation","06/08/21","1:30 PM"},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""}};
JTable jt=new JTable(data,column);    
jt.setBounds(30,40,200,300);          
JScrollPane sp=new JScrollPane(jt);    
Tasks.add(sp);          
Tasks.setSize(650,400);    
Tasks.setVisible(true);    
Tasks.setLocationRelativeTo(null);
} 
//Polymorphism
public static void showtable() {    
new Bustillo();    
}     
}

这是因为您调用的方法是static,它不能很好地处理多态性。网上有很多关于stackoverflow的文章和答案(这里、这里和这里的例子很少(。

举一个非常简单的例子,试着运行这个代码,看看会发生什么:

public class App {
public static void main(String[] args) throws Exception {
new B();
}
}
class A {
public A() {
hi();
}
public static void hi() {
System.out.println("hi");
}
}
class B extends A {
public B() {
hi();
}
public static void hi() {
System.out.println("hello");
}
}

最新更新