机器人类(源类):
public class Robot {
public void cry(){
System.out.println("机器人叫");
}
public void run(){
System.out.println("机器人跑");
狗类(目标类):
public class Dog {
System.out.println("像狗一样叫");
System.out.println("像狗一样跑");
适配器类(继承源类并重写它的方法,目标类作为属性):
public class Adaper extends Robot{
private Dog dog;
public Adaper(Dog dog) {
this.dog=dog;
@Override
public void cry() {
dog.cry();
public void run() {
dog.run();
测试类
public class Test {
public static void main(String[] args) {
Dog dog=new Dog();
Robot robot=new Adaper(dog);
robot.cry();
robot.run();
实现方法请具体参照<
根据需求,代码大致如下
public?static?String?getPropertyGetMethodName(String?property)?{
if?(property?==?null?||?property.trim().length()?==?0)
return?"";
return?"get"?+?String.valueOf(property.charAt(0)).toUpperCase()
+?property.subSequence(1,?property.length());
public?static?void?main(String[]?args)?{
System.out.println(getPropertyGetMethodName("a"));
System.out.println(getPropertyGetMethodName("name"));
System.out.println(getPropertyGetMethodName("names"));
java内的Collections类自带了一个shuffle洗牌算法.
static void shuffle(List? list)
使用默认随机源对指定列表进行置换.
static void shuffle(List? list, Random rnd)
使用指定的随机源对指定列表进行置换.
这个问题和多态有着直接关系,首先封装两个类,猫类和狗类,定义好属性和值,定义行为,吃,跑,跳等,再新建一个方法实现他们,具体多态只是可以参考下面解释.
Java的多态是java要实现的多种形式
第一段:实现多态的三个条件(前提条件,向上转型、向下转型)
①.、继承的存在;(继承是多态的基础,没有继承就没有多态)
向上转型 Student person = new Student()
将一个父类的引用指向一个子类对象,成为向上转型,自动进行类型转换.此时通过父类引用变量调用的方法是子类覆盖或继承父类的方法,而不是父类的方法此时通过父类引用变量无法调用子类特有的方法.
向下转型 Student stu = (Student)person;
将一个指向子类对象的引用赋给一个子类的引用,成为向下转型,此时必须进行强制类型转换.向下转型必须转换为父类引用指向的真实子类类型,,否则将出现ClassCastException,不是任意的强制转换
向下转型时可以结合使用instanceof运算符进行强制类型转换,比如出现转换异常---ClassCastException
关于java的基础知识学习,一定要多看视频 多看视频 多看视频 重要的事情说三遍,因为视频不会使学习变得枯燥,推荐b站上高淇讲得还不错,可以看看视频了解一下什么是java中的多态.
第二段:多态(Polymorphism)按字面的意思就是"多种状态".在面向对象语言中,接口的多种不同的实现方式即为多态.引用Charlie Calverts对多态的描述——多态性是允许你将父对象设置成为一个或更多的他的子对象相等的技术,赋值之后,
①把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化.
①.0.多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果.在运行时,可以通过指向基类的指针,来调用实现派生类中的方法.
C++中,实现多态有以下方法:虚函数,抽象类,覆盖,模板(重载和多态无关).
OC中的多态:不同对象对同一消息的不同响应.子类可以重写父类的方法
多态就是允许方法重名 参数或返回值可以是父类型传入或返回.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.io.*;
public class ClientDemo01 {
public static void main(String[] args){
JFrame f=new JFrame("AA");
JPanel p1=new JPanel();
ta.setEditable(false); //文本域只读
JScrollPane sp=new JScrollPane(ta); //滚动窗格
JButton b=new JButton("发送");
p1.add(sp);
f.add(p1,"Center");
f.setVisible(true);
f.setResizable(false);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Socket socket=null;
BufferedInputStream bis=null;
BufferedOutputStream bos=null;
try{
bis=new BufferedInputStream(socket.getInputStream());
bos=new BufferedOutputStream(socket.getOutputStream());
MyThread01 mt=new MyThread01(bis,ta);
mt.start();
}catch(Exception e){
e.printStackTrace();
b.addActionListener(new ButtonActionListener01(tf,ta,bos));
class ButtonActionListener01 implements ActionListener{
JTextField tf;
JTextArea ta;
BufferedOutputStream bos;
public ButtonActionListener01(JTextField tf,JTextArea ta,BufferedOutputStream bos){
this.tf=tf;
this.ta=ta;
this.bos=bos;
public void actionPerformed(ActionEvent e){
String message=tf.getText();
if(!message.equals("")){
tf.setText(""); //清空文本框
ta.append("AA:"+message+"\n"); //添加到文本域并换行
bos.write(message.getBytes());
bos.flush();
}catch(Exception ex){
System.out.println("发送失败");
class MyThread01 extends Thread{
BufferedInputStream bis;
public MyThread01(BufferedInputStream bis,JTextArea ta){
this.bis=bis;
while(true){
byte[] b=new byte[100];
int length=bis.read(b);
String message=new String(b,0,length);
ta.append("BB:"+message+"\n");
} import java.awt.*;
public class ServerDemo01{
JFrame f=new JFrame("BB");
ServerSocket server=null;
//ta.append("等待AA连接...\n");
socket=server.accept();
//ta.append("AA已连接\n");
MyThread1 mt=new MyThread1(bis,ta);
b.addActionListener(new ButtonActionListener1(tf,ta,bos));
class ButtonActionListener1 implements ActionListener{
public ButtonActionListener1(JTextField tf,JTextArea ta,BufferedOutputStream bos){
String message=tf.getText(); //获取文本框中的内容
ta.append("BB:"+message+"\n"); //添加到文本域并换行
System.out.println("发送失败!");
class MyThread1 extends Thread{
public MyThread1(BufferedInputStream bis,JTextArea ta){
ta.append("AA:"+message+"\n");
以上就是土嘎嘎小编为大家整理的Java代码实现你和我相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!