java入门基础及简单登录界面的实现

什么是类,什么是对象

类是具有一些相同属性或行为的事物形成的集合。也就是按照某些固定的特征划分在一起的一伙个体,称为一类事物。如人类,植物类,电器类……
对象是某个类的一个具体的个体,具有确定性。如张三这个人,这个红色的杯子……

什么是面向对象?什么是面向过程?
面向找同义词,关注,研究。顾名思义,面向对象就是关注、研究对象,侧重点在对象上,关注事情的执行者是谁。同理面向过程侧重点在过程上,关注事情的执行流程是怎么样的。

OOP编程
语法:
1、一个java文件就是一个类定义
2、定义类的格式:public class 类名{}
3、Java中定义属性:public 属性类型 属性名;
4、Java中定义行为:public 返回类型 方法名(){}
行为三要素:前提(条件)+过程+结果 (被操作者+操作过程+结果)
方法三要素:参数+大括号中内容+返回值
5、主函数:整个程序的入口,用于启动程序
一般我们会独立建立一个类,来运行主函数
6、实例化对象:类名 对象名 = new 类名();
7、对象调用属性:对象名.属性名
8、对象调用行为:对象名.方法名();

Java面向对象编程的三大特性:
继承性、多态性、封装性
封装性:一个方法只做一件事情

工具的使用:
Eclipse:继承开发工具
开发步骤:1)启动工具
2)加载指定的目录(一定要记住)
3)新建工程
4)工程的src下新建package(包:把一些相似功能的代码进行封装)
5)新建class类(class类就是java文件)

构造函数
定义:构造当前类对象的一种行为
格式:public 类名(){}
注意:任何一个类都有构造函数,只是有时候不写

特殊点:
1、不写也会存在
2、作用:用于构造当前类的对象、初始化当前对象的一些基本属性
3、有没有返回值?执行时间:创建当前类对象的时候,有返回值(地址)

补充:引用传递(引用指的就是变量) 把一个引用的地址传递给了另外一个引用
丢失的对象引用:java垃圾清理机制会定期扫描堆空间,清理没有引用的对象

方法重载
方法重载: 同一个类中,多个方法的方法名相同
参数列表(参数个数、参数顺序、参数类型)不同的方法互为重载方法
方法重载意义:在一个类中,提供做同一件事情的不同行为过程
构造方法也是可以重载的
注意:1、构造方法重载目的:提供更多的构造当前类对象的方式,最终目标都是创建对象
2、构造方法重载了,则默认的无参构造方法则没有了
任何一个类,至少会有一个构造方法,但是一旦重载,则默认的不存在了,如果还需要默认的那个,则需要显性的定义出来

public class Student{
    public Student(){
        System.out.println("调用无参构造方法");
    }
    public Student(String s){
        System.out.println("调用带参数的构造方法");
    }
}

继承
继承:类与类之间的继承,可以直接从一个类中获取到当前类的所有属性和方法
关键字:extends
格式:public class 子类类名 extends 父类类名{}
注意:
父类的构造方法是不能被继承
父类的私有属性和方法不能被继承
继承是单继承的,但是可以多层继承

public class A{
    public void say(){
    System.out.println("Hello!");
    }
} 
public class B extends A{}

如上代码,主函数可以直接调用B中从A中继承的say方法

方法重写
方法:子类重写父类的方法(子类可以覆盖从父类继承过来的方法)
条件:子类的方法和父类方法:方法名相同、参数列表也相同、返回类型相同
意义:子类修改父类的方法执行过程

public class A{
    public void say(){
    System.out.println("Hello!");
    }
} 
public class B extends A{
    public void say(){
    System.out.println("Hello World!");
    }
}

如上所示,如果调用B中的say方法,则是B中改写过的say方法,而不是被覆盖掉的从A中继承来的say方法。

继承:
1、自动转型
i.定义:创建对象的时候,子类的对象可以自动转型为父类的类型
ii.格式:父类类名 对象名 = new 子类类名();
iii.强制转型:子类类型 对象名= (子类类型)父类对象;
iv.自动转型后的对象是什么类型?
1.自动转型后的对象是转型后的父类类型
2.调用方法:如果子类重写了父类的方法,则执行重写后的,如果没有重写,则执行父类的
2、多态:多个同一个类型的对象,调用同一个方法的时候,执行过程不一样

总结:
多态性->方法重写+自动转型->继承
this:这个(当前类对象)
1)看this在哪个方法中用 2)找到调用这个方法的对象 3)this==调用方法的对象

方法分类:普通函数、构造函数、抽象方法
普通方法:public 返回类型 方法名(){}
构造方法:public 类名(){}
抽象方法:public abstract 返回类型 方法名();(说明:没有方法体的方法)

类的分类:普通类、抽象类、接口
普通类:public class 类名{}
类中可以有构造方法、普通方法,不能有抽象方法,可以有常量和变量,可以直接建立对象
抽象类:public abstract class 类名{}
类中可以有构造方法、普通方法,抽象方法,可以有常量和变量,但不能建立对象
接口:public interface 类名{}
类中只能有抽象方法,只能有常量,不能建立对象

定义类的目的:创建对象,并提供方法调用
抽象类和接口:当父类用的,约束子类方法的定义

接口继承(implements)
接口作用:当作父类来使用,约束子类的方法定义
如何完成:父类的抽象方法,在子类中必须全部做重写操作

extends和implements这个两个关键字都是实现继承
extends的父类只能是:抽象类和普通类
implements的父类只能是:接口

界面编程入门(编写qq登录界面)

**
1、先实现一个窗体(设置窗体的相应属性)
2、往窗体上添加组件(设置组件相应的属性并加到组件上)

系统类:javax.swing.JFrame
javax.swing.JLabel
javax.swing.JButton
javax.swing.ImageIcon
javax.swing.JCheckBox
javax.swing.JTextField
方法:
setSize设置大小
setTitle设置标题
setLocationRelativeTo设置位置居中
setDefautlCloseOperation设置关闭方式
setText设置文本
setBounds设置定位
setLayout设置布局
setVisible设置可见
setIcon设置图片

类名定义的规律:驼峰式 定义类名/方法名 切勿随意:顾名思义
定义类:类名每个单词首字母全部大写
定义函数/属性:除了第一个单词的首字母小写,其他的全部大写

import javax.swing.*;
import java.awt.*;

public class Text{

    public static void main(String[] args)
    {
        //定义一个窗体
        JFrame jf=new JFrame();
        //给窗体定义标题
        jf.setTitle("qq登陆界面");
        //设置窗体大小
        jf.setSize(428,365);
        //设置窗体关闭方式
        jf.setDefaultCloseOperation(3);
        //设置窗体标题栏不显示
        jf.setUndecorated(true);
        //设置窗体居中显示
        jf.setLocationRelativeTo(null);
        //清空窗体布局
        jf.setLayout(null);

        //定义标签
        JLabel lab=new JLabel();
        //定义图片并插入图片
        ImageIcon imag=new ImageIcon("lesson01/image/head.gif");
        //将图片添加到标签上
        lab.setIcon(imag);
        //设置标签大小及位置
        lab.setBounds(0,0,428,174);
        //将标签添加到窗体上
        jf.add(lab);

        JLabel lab_1=new JLabel();
        ImageIcon imag_1=new ImageIcon("lesson01/image/img.jpg");
        lab_1.setIcon(imag_1);
        lab_1.setBounds(30,190,80,80);
        jf.add(lab_1);      

        //定义文本框
        JTextField jtf=new JTextField();
        //设置文本框大小及位置
        jtf.setBounds(130,200,197,30);
        //将文本框添加到窗体
        jf.add(jtf);        
        JTextField jtf_1=new JTextField();
        jtf_1.setBounds(130,231,197,30);
        jf.add(jtf_1);

        //定义文本域
        JTextArea jta=new JTextArea();
        //为文本域设置文本
        jta.setText("注册账号");
        //设置文本域大小及位置
        jta.setBounds(330,200,60,27);
        //将文本域添加到窗体
        jf.add(jta);
        JTextArea jta_1=new JTextArea();
        jta_1.setText("找回密码");
        jta_1.setBounds(330,232,60,27);
        jf.add(jta_1);  

        //定义复选框
        JCheckBox jcb=new JCheckBox();
        //设置复选框文本
        jcb.setText("记住密码");
        //设置复选框大小及位置
        jcb.setBounds(130,260,90,30);
        //将复选框添加到窗体
        jf.add(jcb);    
        JCheckBox jcb_1=new JCheckBox();
        jcb_1.setText("记住密码");
        jcb_1.setBounds(250,260,90,30);
        jf.add(jcb_1);

        //定义按钮
        JButton jb=new JButton();
        //为按钮设置文本
        jb.setText("登录");
        //设置按钮大小及位置
        jb.setBounds(110,300,243,37);
        //设置按钮背景色
        jb.setBackground(Color.blue);
        //将按钮添加到窗体
        jf.add(jb);

        //设置窗体可见
        jf.setVisible(true);
    }
}

你可能感兴趣的:(java入门基础及简单登录界面的实现)