`

java编程操作心血

阅读更多

/*

多态:父类的引用指向子类的对象。

当两个类中有同一个方法(覆盖)时会优先调用子类

*/

Demo1。

package pc2;

class Father

{

 

public void func1()

{

  func2();

}

public void func2()

{

System.out.println("AAA");

}

}

class Son extends Father

{

public void func1(int i)

{

System.out.println("BBB");

}

public void func2()

{

System.out.println("CCC");

}

}

public class Duotai {

 

public static void main(String[] args) {

// TODO Auto-generated method stub

Father child=new Son();

child.func1();child.func2();

/*child.func1(22);不能通过编译父类里没有func1(int i)*/

}

 

}

输出 CCC  

    CCC

 

Demo2.

package pc2;

class Vehicle

{

public void startUp()

{

System.out.println("调用了Vehicle类的startUp方法");

}

}

class Car extends Vehicle

{

public void startUp()

{

System.out.println("调用了Car类的startUp方法");

}

}

public class Sample4_5 {

 

public static void main(String[] args) {

// TODO Auto-generated method stub

Car c=new Car();

c.startUp();// 

Vehicle v=new Car();

v.startUp();

}

 

}

输出:调用了Car类的startUp方法

调用了Car类的startUp方法

 

Demo3

package pc3_memory;

class Vehicle

{

void startUp()

{

System.out.println("一般汽车的启动方法");

}

String s="I'm OK!";

}

class Car extends Vehicle

{

void startUp()

{

System.out.println("小轿车的启动方法");

}

String s="Maybe you are right";

}

public class Sample4_5 {

 

public static void main(String[] args) {

// TODO Auto-generated method stub

 

//动态链接时方法与变量的区别

Vehicle v=new Car();

v.startUp();

System.out.println(v.s);

System.out.println(((Car)v).s);//强制类型转化

}

 

}

输出:小轿车的启动方法

I'm OK!

Maybe you are right

 

Demo4

/*

对象与数组的关系

*/

 

Deno1

package pc2;

 

public class Reference {

public static void main(String args[])

{

   Person students[];

   students=new Person[2];

 // System.out.println( students[1].age);

   System.out.println("length   "+students.length);

   Person zhang=new Person();//定义并且实例化一个叫zhang的Person对象

   zhang.age=15;

   zhang.height=200;

   Person lee=new Person();

   lee.age=17;

   lee.height=204;

   students[0]=zhang;//把对象赋给Person类型的数组

   students[1]=lee;

   lee.info();//最后两条语句功能相同

   students[1].info();

}

}

 

  class Person {

  public int age;

  public double height;

  public void info()

  {

 System.out.println("my age is:"+age+"my height is:"+height);

  }

}

/*

length2

my age is:17my height is:204.0

my age is:17my height is:204.0

 

*/

Demo5

String s2="Monday";与

String s2=new String("Monday");的区别

package pc3_memory;

 

public class StringTest {

 

public static void main(String[] args) {

// TODO Auto-generated method stub

String s1="Monday";

String s2="Monday";

//String s2=new String("Monday");依次按照上下隐藏s2

if(s1==s2)

System.out.println("s1==s2");

else

System.out.println("s1!=s2");

if(s1.equals(s2))

System.out.println("s1.equals(s2)");

else

System.out.println("!s1.equals(s2)");

}

}

/*在堆里面创建好了字符串1过后,开创建s2时会先在堆里面(字符前缓冲池)判断有没有与s1对象相同值的

 字符串,若有则s2会直接的引用s1.

 如果使用new操作符,则表明需要一个新的,不要旧的。一个新的值相同的对象被创建,在缓冲池的不同位置

 。就好比如一个人在河里游泳,而另一个人在岸边散步*/

/*

输出

s1==s2

s1.equals(s2)

*/

隐藏上面的:输出

s1!=s2

s1.equals(s2)

 

Demo6接口,内部类

内部类

package pc2;

 interface ComputerWeight//定义了一个接口实现计算重量的功能

{

public   double ComputeWeight() ;

 

//接口没有构造函数,因为构造函数不能继承,Java是纯虚的,抽象类可以有构造函数

 

}

class Television implements ComputerWeight//以下三个类实现了接口的功能,通过在类体里实现接口的方法

{//计算电视机的重量

Television(double a)

{

this.a=a;

}

public double ComputeWeight()

{

return a;

}

double a;

}

class Computer implements ComputerWeight

{//计算电脑的重量

Computer(double a)

{

this.b=a;

}

public double ComputeWeight()

{

return b;

}

double b;

}

class WashMachine implements ComputerWeight

{//计算洗衣机的重量

WashMachine(double a)

{

this.c=a;

}

   double c;

   public double ComputeWeight()

   {

  return c;

   }

}

class Car//定义汽车类,实现将不同的接口实现的功能相加

{

ComputerWeight goods1;//表现出like-a

ComputerWeight goods2;

ComputerWeight goods3;

Car(ComputerWeight goods1,ComputerWeight goods2,ComputerWeight goods3)

{

this.goods1=goods1;

this.goods2=goods2;

this.goods3=goods3;

}

public double getTotalWeights()

{

return goods1.ComputeWeight()+goods2.ComputeWeight()+goods3.ComputeWeight();

}

}

public class InterTest {

public static void main(String args[])

  {  ComputerWeight goodsOne=new Television(93);/*接口类型的引用

  指向一个实现该接口的对象,这是Java里的一种多态现象。

  Java里的接口不能被实例化,通过接口来调用方法,屏蔽掉具体方法的实现。

  这就是接口回调,也叫做面向接口的编程

  */

ComputerWeight goodsTwo=new Computer(32);

ComputerWeight goodsThree =new WashMachine(45);

    Car  car=new Car(goodsOne, goodsTwo, goodsThree);

    System.out.println(car.getTotalWeights());

    System.out.println(goodsOne.ComputeWeight());

    System.out.println(goodsTwo.ComputeWeight());

    System.out.println(goodsThree.ComputeWeight());

}

}

输出:

170.0

93.0

32.0

45.0

分享到:
评论

相关推荐

    Java笔记,本人学习java的心血笔记

    Java程序的执行是从`main`方法开始的,然后根据程序逻辑调用其他方法。 ##### 2.3.2 方法分类 方法可以分为实例方法和静态方法。 ##### 2.3.3 构造方法 构造方法用于初始化对象的状态,它的名字与类名相同,并...

    java夜未眠

    这份笔记涵盖了Java编程语言的各个方面,对于任何希望深入理解和掌握Java的人来说,都是一份极其宝贵的参考资料。 首先,我们来探讨Java的基础知识。Java是一种面向对象的编程语言,它的设计目标是“一次编写,到处...

    java推箱2.0源代码

    对于学习Java编程、游戏开发或者想要了解推箱游戏工作原理的人来说,这份源代码是一份宝贵的资源。接下来,我们将深入探讨其中涉及的关键知识点。 1. **Java编程基础**:源代码是用Java语言编写的,因此首先需要...

    java扰码器

    Java扰码器是一种工具,主要用于保护Java应用程序的源代码,防止未经授权的反编译和篡改。在软件开发中,源代码是程序员的心血结晶,包含了许多设计思想和商业秘密。因此,对于发布到公共环境的Java应用,尤其是商业...

    Zelix KlassMaster 12 JAVA 加密利器

    总的来说,Zelix KlassMaster 12是JAVA开发者在代码安全方面的得力助手,它通过混淆和加密技术,为JAVA应用程序构建了一道坚固的防护屏障,有效地保护了开发者的心血不被轻易侵犯。通过深入理解和使用ZKM 12.0.1,...

    c&c++&java;试题大全(有面试题、笔试题、答案、面试心得等,多年心血的总结)

    这是一份综合性的编程试题集,包含了C、C++和Java三种语言的相关面试题、笔试题及其答案。这份资料是作者多年经验的结晶,旨在帮助学习者全面了解和掌握这三个编程领域的核心概念、语法、算法以及编程技巧。 **...

    java初学者笔记宝典(经典)

    这些是Java编程的基础,对于构建任何Java应用都是必不可少的。 4. **XML**:XML(可扩展标记语言)用于存储和传输数据,常用于Web服务和配置文件。了解XML的语法、解析和创建XML文档是Java开发者的必备技能。 5. *...

    java代码混淆工具

    在Java中,混淆主要是针对字节码(.class文件)进行操作,因为Java程序最终会被编译成字节码,并在JVM上运行。混淆后的代码虽然不影响程序的功能执行,但使得反编译后的结果变得极其复杂,极大地增加了逆向工程的...

    weiqi.rar_java围棋代码_weiqi

    【围棋与Java编程】 在IT领域,围棋是一种极具策略性的二人对弈游戏,它与编程的结合为开发者提供了丰富的挑战和学习机会。本资源“weiqi.rar”包含了一个使用Java语言编写的围棋应用程序,这使得程序员能够深入...

    初学Java编写的万年历

    【描述】:“初学Java编写的万年历程序,花费了不少心血,大家可以参考下!” 这表明这个程序可能包含了作者深入理解Java核心概念的努力。在开发万年历程序时,开发者通常需要处理日历系统,包括公历、农历等,以及...

    源码网站大全 C语言源代码 C++语言源代码 java语言源代码

    在源码网站上,你可以找到C语言的基本语法示例、算法实现、操作系统内核片段等,这对于初学者理解和提高编程能力非常有帮助。 2. C++语言源代码:C++是C语言的扩展,增加了面向对象的特性,被广泛用于游戏开发、...

    JBuilder固定资产管理系统java项目源码.zip

    在IT领域,尤其是软件开发中,源码是程序员的心血结晶,是程序运行的基础。本项目“JBuilder固定资产管理系统”是一款基于Java语言设计的系统,旨在实现对固定资产的有效管理和追踪。通过深入分析其源码,我们可以...

    java经典源代码6

    在Java编程领域,源代码是开发者的心血结晶,它们展示了程序设计的思想和实现方式。"java经典源代码6"这个压缩包聚焦于游戏开发,包含了华容道和拼图等经典小游戏的源代码,这些都是Java程序员提升技能和理解游戏...

    java web开发文档集中营

    【描述】"这是我最近花了很大的力气搜集来的希望可以帮到你"表明这个压缩包包含的资料是经过精心整理的,包含了作者对Java Web开发深入研究的心血结晶,目的是为了帮助读者节省寻找资源的时间,快速获取必要的学习和...

    SCJP5.0全套资料(个人心血笔记&2套题库)

    SCJP(Sun Certified Java Programmer)5.0是Java编程领域的一个重要认证,它验证了开发者对Java SE 5.0平台的基本理解与编程能力。这个认证对于那些希望深入理解Java语言特性和准备进入IT行业的专业人士来说,是...

    calculator_java.zip_Java GUI计算器_sin函数 java

    这是一个java写的计算器,除了加减乘除外还实现了许多的函数,比如sin,cos,求倒数,二十进制转换等,是我十多天的心血,程序非常长,也成功实现了设定的功能,有漂亮的用户界面,通过这个程序可以学到很多关于java ...

    java 小程序 圣诞贺卡(仿qq农场小游戏)

    这是一个心血来潮的小作品...... | | 身边的朋友都喜欢玩农场,圣诞节将近,见到朋友的心情改的是想种圣诞老人,于是就 | | 有了这个小玩意。希望大家快乐。初学java,把一些基本的东西,尽量都用上了。适合初学...

    商业编程-源码-调皮的老鼠 鼠标控制程序源代码.zip

    在IT行业中,编程是一项至关重要的技能,特别是在...通过这个“调皮的老鼠”鼠标控制程序,你将有机会实践和巩固你的编程技能,尤其是对操作系统交互和事件处理的理解,这对于任何IT专业人员来说都是一项宝贵的经验。

    Java字节码加密工具

    Java字节码加密工具是一种用于保护Java应用程序源代码安全的工具。在软件开发过程中,源代码是开发者的心血结晶,包含了许多重要的商业逻辑和技术细节。然而,Java的字节码(.class文件)虽然相对于源代码(.java...

Global site tag (gtag.js) - Google Analytics