构造函数与类名同名,没有返回值,一个类可以定义多个构造函数,但每个构造函数的参数内容必须不同;
创建构造函数:类名(参数列表){
…….
}
成员方法的重载:重载的是意思是一个类中有多个相同名的方法。但是每个方法的参数不同(可以没有参数);
作用:Java程序中方法的重载是实现面向对象多态性的一个重要方法
1. 参数个数不同
2. 参数类型不同
3. 与方法前面的修饰符,返回值无关
4. 调用时根据它的实参的类型,个数以及顺序来区分调用哪个方法(顺序时类型必须不一样)
5. 不能通过访问权限。返回类型,抛出异常进行重载。
6. 方法的异常类型和数目不会对重载造成影响
7. 对于继承来说,如果某一个方法在父类中是priavte(私有的),那么就不能在子类对其进行重载,若要定义,也只是定义了一个新的方法,而不会达到重载的效果。
8. Java中支持构造函数的重载(构造函数可以省略不写,会自动生成的,为了符合类的定义),格式同上。
构造函数怎么调用构造函数,前面在this讲过。如下:
public class Person{
String name;
int age;
public Person(String name){
this.name = name;
}
public Person(String name,int age){
this(name); //调用了Person(String name)
this.age = age;
}
}
对于学习要勇于探索新的知识,其实有的时候我们都存在一个误区,也是我以前一直存在的,那就是觉得自己基础不好(特别对待英语,数学等),导师讲一个小项目,然后用得是一种我们没学过的语言或者一种工具来写,他在讲的时候可能我们听不懂,我们会觉得老师怎么样怎么样,心里觉得这老师不会讲,不会体会同学们的感受,为什么不从基础讲起,然后干脆不听了,反正听不懂。然而你想过没有其实完全可以通过课后时间来学,而且甚至可以比老师讲的还快。对于不听这是一种自己内心本就抵抗的心理+一个懒字。解决方法:你要正确全面认真的认识这门语言或者工具。另外对于我来说就一个字:狠。就是对自己狠!对一件事连续坚持一个星期,慢慢你会发现原来也没有那么难。接着一个月,你会发现你坚持的事不止一件了。
package FHVK;
/**
* 创建服务器的程序
* @author 李超武
*本程序还不能实现通信,1.没有连接对象 2.没有发送和接收的功能*/
import java.net.*; /*java中与网络相关的功能都定义在此包
创建服务器的方法就在此中包括下面要讲的连接服务器,
所以这句就是把它导入到本程序中,方便进行调用其中的方法*/
public class Server { //创建一个类
//主函数程序的入口
public static void main(String[] args){
Server server = new Server(); //创建对象
server.CreateServer(8888); //调用server对象中创建服务器的方法
}
//创建服务器的方法
public void CreateServer(int port){ /*port代表端口,1,端口代表程序在计算机中的位置,2.ip地址代表计算机在网络中的位置*/
//捕获异常(还有抛出异常,最好用捕获直播解决。麻烦少)
try{
//这是最关键的,创建连接服务器对象传给它一个端口
ServerSocket serversocket = new ServerSocket(port);
//提示语句
System.out.println("代表服务器创建成功。等待用户的连接...");
}catch (Exception e){
e.printStackTrace();
}
}
}
运行本程序将输出:代表服务器创建成功。等待用户的连接…
所以差个用户连接接着往下看哈哈。
package FHVK;
/**
* 创建一个客户端
* 连接到服务器端
* @author 李超武
* 实现发送和接收功能
*/
import java.net.*; //讲过,同理也要导进来
import java.io.*; /* i/o流包,代表输入输出
(我们将使用它的InputStream流类和OutputStream流类进行接收和写入)*/
public class Client {
//全局变量,全局变量的使用是为了某个变量或者常量的作用域达到整个类
InputStream in; /*为什么定义成全局的?这会讨论到作用域,在本程序用不到
但在后面写UI的时候用得到,在后续说*/
//偷下懒,写过的注释不写啦
public static void main(String[] args){
Client client = new Client();
/*locahlost代表本地ip地址
8888代表端口其它计算机就是通过这两个数据找到对应计算机的服务器
*/
client.ConnectClient("localhost", 8888); /*telnet localhost 8888 是cmd中的命令
telnet是Win内部命令用于连接到指定服务器,localhost 8888在上面说过 那如果是别人想连怎么办
很简单,把localhost改成服务器ip地址就好啦,但要注意前提得在同一局域网*/
}
//创建连接服务器方法
public void ConnectClient(String ip,int port){
try{
//最重要的,创建连接对象并把ip和端口给它
Socket connect = new Socket(ip,port);
//获取输入流对象用于接收消息
in = connect.getInputStream();
/*在服务器中我们加了getBytes()方法就是用来把字符转换为字节
在传送过程中所有数据都会转换成字节进行发送和接收*/
int data = in.read(); //int data用户接收字节数据
while(data != 13){
/*为什么循环?因为数据是一个一个字节读取的
有个结束判断为什么不等于13,在服务器中
我们在message后面是不是加了\r\n,\r的ASCII值为13
所以当读取到\r的时候就跳出循环啦 \n的值为10*/
System.out.print((char)data); //接收的字节,为了更好的表示出来我们把它强转成字符
data = in.read(); //继续接收
}
}catch (Exception e){
e.printStackTrace();
}
}
}
运行:先运行Server 再运行客户端
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务