java初学者之总结

                        什么是对象,类,对象,继承,多态,重载?
从概念角度,类是一种抽象,能够把你需要的特点刻画出来

如果仅仅从编程语言来理解,那类就是一种模板,定义一个类相当于定义一个数据类型,以及相关的函数方法~

对象就是根据类这个模板,生成的所谓"实例",就是像用模子造零件一样,所有的对象都拥有和类一样的结构,但是对象里储存的数据都是独立的互不干扰的

简单来说,类就是对一个事物抽象出来的结果。比如人可以作为一个类。一般来说,一个类具有成员变量和成员方法。成员变量相当于属性,比如‘人’具有的变量有胳膊,手脚等。而成员方法是该类能完成的一些功能,比如‘人’可以说话(talk),行走(walk)等。

对象,如果说类是一个抽象概念,那么对象就是具体对象。比如我们说‘人’就是一个抽象概念,但是具体到某个人,比如你,我,他,就是一个‘人’对象。
封装,简单理解就是把一系列的数据放在一个类中,还用前面的例子,如果形容一个人,我们可以用身高(hight),体重(weight)等来描述,如果不封装,我们需要3个变量来形容它。在面向对象中,可以用一个Person类封装这些数据,Person具有3个成员变量,分别是height,weight。使用的时候,每当生成一个这样的类的对象,就具有这3个属性。

继承,如果B类继承A类。那么B类将具有A类的所有方法,同时还可以扩展自己独有的方法和属性。还用人做例子。‘人’是父类,那么‘男人’,‘女人’都是继承自‘人’。也就是说,不论‘男人’,‘女人’,都具有‘身高’,‘体重’这两个属性,同时,他们可以有自己独有的属性,比如‘女人’可以有一个‘三围’属性-_-!

多态,在java中,同一个方法可以有多种不同的表现形式,具体说来分为重载和重写。重载就是一个方法的方法名相同而所具有的参数列表不同。比如:
public String talk(String content);   //参数是String,
public String talk(String content, int number)  //参数是2个,String和int
重载则是子类在继承父类的同时,重新实现了父类的某个方法。重载的方法名和参数都必须完全相同。
比如父类
public String talk(String content) {
     System.out.print(content);
}
子类继承该类,所以也具有talk这个方法,他重新定义了该方法的实现
public String talk(String content) {
     System.out.println("Hi" + content);
}

抽象类和一般类的最大区别,就是不能实例化一个对象,但是它可以被继承。
接口则是指定义了方法的名字,而不定义他的实现。方法的具体实现由其实现类去完成。比如
public interface mp3{
     public void play();
     public void pause();
}

这就定义了一个mp3的接口,任何其他类都可以实现这个类,但是实现这个接口就必须实现这个接口所定义的方法。换句话说,任何实现mp3的类,都必须具有play()和pause()的方法,比如
public class IPod implements mp3{
     public void play(){
          //具体实现
     }
     public void pause(){
          //具体实现
     }
}

 java中的值传递和引用传递
值传递:方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参 数的值。
引用传递:也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,方法执行中形式参数值的改变将会影响实际参数的值。





 接口

 接口中只有方法体,用一个类去实现接口
 interface 接口定义,implements 实现
public interface jiekou {
//只有方法体
public void printout(String ss);
}

………………………………………………………………………………………………………………………………………………………
//用一个类实现接口
public class lei implements jiekou{

public void printout(String s){
System.out.println(s);
}
}

………………………………………………………………………………………………………………………………………………………
//测试
public class test {

public static void main(String[] args) {
lei s=new lei();
s. printout ("石宏涛");
}
}

…………………………………………………………………………………………………………………………………………………

 窗体
简单窗体代码:
/*
* 窗体测试类,用来显示一个窗体
*/

public class JFrameTest {

//显示窗体
public void showFrame(){
//创建一个窗体对象
javax.swing.JFrame jf=new javax.swing.JFrame();

//流式布局管理器
java.awt.FlowLayout fl=new java.awt.FlowLayout();
jf.setLayout(fl);

//窗体标题
jf.setTitle("窗体");
//窗体大小
jf.setSize(400,200);

//姓名标签
javax.swing.JLabel jl1=new javax.swing.JLabel("Name:");
jf.add(jl1);

//文本框
javax.swing.JTextField jt=newjavax.swing.JTextField(7);
jf.add(jt);

//学号标签
javax.swing.JLabel jl2=new javax.swing.JLabel("Num:");
jf.add(jl2);

//文本框
javax.swing.JTextField jt2=new javax.swing.JTextField(7);
jf.add(jt2);

//显示窗体
jf.setVisible(true);

}

    public static void main(String[] args) {
JFrameTest frame=new JFrameTest();
frame.showFrame();
   
}

}


简单画板的实现
1. 注意先显示窗体再取得画布对象,否则会出现空指针异常
2. 画布对象通过构造器传
3. 得到两次点击坐标用到计数器
4. 鼠标监听器的使用
import javax.swing.JFrame;

public class simpleDraw extends JFrame {
public void showDraw(){
//流式布局管理器
this.setLayout(new java.awt.FlowLayout());

this.setTitle("Draw");
this.setSize(600,400);

//显示窗体
this.setVisible(true);
//注意要在显示窗体后再得到画布对象,否则就会出现空指针异常

//鼠标点击监听
//得到画布对象,通过构造器把画布对象传过去,
java.awt.Graphics g=this.getGraphics();

MyMouseListener mml=new MyMouseListener(g);
this.addMouseListener(mml);


}
public static void main(String[] args){
simpleDraw sd=new simpleDraw();
sd.showDraw();
}
 
}
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class MyMouseListener implements MouseListener{

public int x1,x2,y1,y2,clickcount=0;
public java.awt.Graphics g;

//构造器传画布对象g
public MyMouseListener(java.awt.Graphics g){
this.g=g;
}

    public void mouseClicked(MouseEvent e){}

    public void mousePressed(MouseEvent e){}

    public void mouseReleased(MouseEvent e){
    if(clickcount==0){
    x1=e.getX();
    y1=e.getY();
    clickcount++;
    }else{
    clickcount--;
    x2=e.getX();
    y2=e.getY();
    g.drawLine(x1, y1, x2, y2);
    }
   
    }

   
    public void mouseEntered(MouseEvent e){}

   
    public void mouseExited(MouseEvent e){}

}




有监听器的窗体代码:
 Java.awt.event.ActionListener行为监听器的实现
 java.awt.event.MouseListener鼠标监听器的实现
 首先 组件 发生动作,它产生事件,事件被传递到相应的监听器(或者适配器)里,调用程序员编写的相应处理方法,从而响应事件!
例: 当组件(比如 Button)被点击时就会产生ActionEvent事件,事件被传递给一个 ActionListener 对象,再由ActionListener 定义的方法来响应处理事件!
另:适配器类是对监听器接口的简化,因为有的监听器接口
(如:WindowListener,MouseListener),它有一些方法可能是我们不用的,但为了迎合接口重写规则还必须写! 所以产生了适配器类,它也是抽象类,但类中方法都不是抽象的,所以我们可以挑我们用的方法进行重写!这样我门也能通过继承适配器类来实现监听器的功能,而且不用的方法不用写!节省时间嘛~


代码:
/*
* 窗体测试类,用来显示一个窗体
*/

public class JFrameTest {

//显示窗体
public void showFrame(){
//创建一个窗体对象
javax.swing.JFrame jf=new javax.swing.JFrame();

//流式布局管理器
java.awt.FlowLayout fl=new java.awt.FlowLayout();
jf.setLayout(fl);

//窗体标题
jf.setTitle("窗体");
//窗体大小
jf.setSize(400,200);

//姓名标签
javax.swing.JLabel jl1=new javax.swing.JLabel("Name:");
jf.add(jl1);

//文本框
javax.swing.JTextField jt=new javax.swing.JTextField(7);
jf.add(jt);

//学号标签
javax.swing.JLabel jl2=new javax.swing.JLabel("Num:");
jf.add(jl2);

//文本框
javax.swing.JTextField jt2=new javax.swing.JTextField(7);
jf.add(jt2);

//按钮
javax.swing.JButton jb=new javax.swing.JButton("提交");
jf.add(jb);

//按钮监听器
MyActionListener mal=new MyActionListener();
jb.addActionListener(mal);

//显示窗体
jf.setVisible(true);

}

    public static void main(String[] args) {
JFrameTest frame=new JFrameTest();
frame.showFrame();
   
}

}
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class MyActionListener implements ActionListener{
public void actionPerformed(ActionEvent e){

System.out.println("success");

}

}



 画板延伸
 主要代码:
String[] str={"yuan","xian","fang"};
javax.swing.JComboBox jcb=new javax.swing.JComboBox(str);
 MyMouseListener(g,jcb,jcbcolor);
 String tc=(String)jcbcolor.getSelectedItem();

import javax.swing.JFrame;

public class simpleDraw extends JFrame {
public void showDraw(){
//流式布局管理器
this.setLayout(new java.awt.FlowLayout());

this.setTitle("Draw");
this.setSize(600,400);

//形状下拉菜单条
String[] str={"yuan","xian","fang"};
javax.swing.JComboBox jcb=new javax.swing.JComboBox(str);
this.add(jcb);

//颜色下拉菜单条
String[] strcolor={"red","green","blue"};
javax.swing.JComboBox jcbcolor=new javax.swing.JComboBox(strcolor);
this.add(jcbcolor);

//显示窗体
this.setVisible(true);
//***注意要在显示窗体后再得到画布对象,否则就会出现空指针异常

//鼠标点击监听
//得到画布对象,通过构造器把画布对象传过去,
java.awt.Graphics g=this.getGraphics();

MyMouseListener mml=new MyMouseListener(g,jcb,jcbcolor);
this.addMouseListener(mml);





}
public static void main(String[] args){
simpleDraw sd=new simpleDraw();
sd.showDraw();
}
 
}
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
import java.awt.event.MouseEvent;
Import java.awt.event.MouseListener;

public class MyMouseListener implements MouseListener{

public int x1,x2,y1,y2,clickcount=0;
public java.awt.Graphics g;
public javax.swing.JComboBox jcb;
public javax.swing.JComboBox jcbcolor;

//构造器传画布对象g
public MyMouseListener(java.awt.Graphics g,javax.swing.JComboBox jcb,
javax.swing.JComboBox jcbcolor){
this.g=g;
this.jcb=jcb;
this.jcbcolor=jcbcolor;
}

    public void mouseClicked(MouseEvent e){}

    public void mousePressed(MouseEvent e){}

    public void mouseReleased(MouseEvent e){
    if(clickcount==0){
    x1=e.getX();
    y1=e.getY();
    clickcount++;
    }else{
    clickcount--;
    x2=e.getX();
    y2=e.getY();
    //得到选中框框中的内容
    String tc=(String)jcbcolor.getSelectedItem();
    if(tc.equals("red")){
    g.setColor(java.awt.Color.RED);
    }else if(tc.equals("green")){
    g.setColor(java.awt.Color.GREEN);
    }else if(tc.equals("blue")){
    g.setColor(java.awt.Color.BLUE);
    }
   
    String t=(String)jcb.getSelectedItem();
    if(t.equals("yuan")){
    g.drawOval(x1, y1, x2-x1, y2-y1);
    }else if(t.equals("xian")){
    g.drawLine(x1, y1, x2, y2);
    }else if(t.equals("fang")){
    g.drawRect(x1, y1, Math.abs(x2-x1),Math.abs(y2-y1));
   
    }
   
   
    }
   
    }

   
    public void mouseEntered(MouseEvent e){}

   
    public void mouseExited(MouseEvent e){}


 表格
 设置表格大小要在模型加给表格之后
 表格要有布局管理器否则设置大小时会出错

    

你可能感兴趣的:(java,数据结构,编程,swing)